Stroke.ExtendedProperties Property
Gets the collection of application-defined data.
Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in microsoft.ink.dll)
Syntax
'Declaration
Public ReadOnly Property ExtendedProperties As ExtendedProperties
'Usage
Dim instance As Stroke
Dim value As ExtendedProperties
value = instance.ExtendedProperties
public ExtendedProperties ExtendedProperties { get; }
public:
property ExtendedProperties^ ExtendedProperties {
ExtendedProperties^ get ();
}
/** @property */
public ExtendedProperties get_ExtendedProperties ()
public function get ExtendedProperties () : ExtendedProperties
Not applicable.
Property Value
The collection of application-defined data.
Remarks
Applications can use the ExtendedProperties property to access the custom data that is stored in the Stroke object. This custom data is automatically serialized with the object.
Example
This C# example stores a a time stamp for each Stroke object when the InkCollector object's Stroke event fires. For each stroke drawn on an InkCollector, theInkCollector
, the example stores the time stamp in the Stroke object's ExtendedProperties property. When the user clicks a button, theButton
, a list box, theListBox
, is populated with a list of the time stamps of the strokes.
//...
using Microsoft.Ink;
namespace CS_StrokeEvent
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ListBox theListBox;
private System.Windows.Forms.Button theButton;
//...
// Add the following after Main() in the generated code.
InkCollector theInkCollector;
// This GUID constant will be used for our strokes'
// timestamp extended property.
Guid theTimeGuid = new Guid(10, 11, 12, 10, 0, 0, 0, 0, 0, 0, 0);
private void Form1_Load(object sender, System.EventArgs e)
{
// Initialize the InkCollector with the form's
// window handle, then enable it.
theInkCollector = new InkCollector(Handle);
theInkCollector.Enabled = true;
// Add a handler for Stroke Events to record
// an extended property with each one.
theInkCollector.Stroke += new InkCollectorStrokeEventHandler(TheStrokeHandler);
}
public void TheStrokeHandler(object sender, InkCollectorStrokeEventArgs e)
{
// Write the current time into this stroke.
// First get the time as a long.
long theTime = DateTime.Now.ToFileTime();
// Store the data under its own Guid key.
e.Stroke.ExtendedProperties.Add(theTimeGuid, theTime);
}
private void PopulateList()
{
//Clear the list before repopulating it.
theListBox.Items.Clear();
// Query the InkCollector's Ink for its Strokes collection.
Strokes theStrokes = theInkCollector.Ink.Strokes;
foreach (Stroke theStroke in theStrokes)
{
// Test for the timestamp property on this stroke.
if (theStroke.ExtendedProperties.DoesPropertyExist(theTimeGuid))
{
// Get the raw data out of this stroke's extended
// properties list, using the previously defined
// Guid as a key to the required extended property.
long theLong = (long)theStroke.ExtendedProperties[theTimeGuid].Data;
// Then turn it (as a FileTime) into a time string.
string theTime = DateTime.FromFileTime(theLong).ToString();
// Add the string to the list box.
theListBox.Items.Add(theTime);
}
}
}
private void theButton_Click(object sender, System.EventArgs e)
{
PopulateList();
}
// Event handler for the form's closed event
private void Form1_Closed(object sender, System.EventArgs e)
{
theInkCollector.Dispose();
theInkCollector = null;
}
}
}
This Microsoft® Visual Basic® .NET example stores a a time stamp for each Stroke object when the InkCollector object's Stroke event fires. For each stroke drawn on an InkCollector, theInkCollector
, the example stores the time stamp in the Stroke object's ExtendedProperties property. When the user clicks a button, theButton
, a list box, theListBox
, is populated with a list of the time stamps of the strokes.
Imports Microsoft.Ink
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
'... This section is generated automatically.
#End Region
Private theInkCollector As InkCollector
' This GUID constant will be used for the strokes'
' timestamp extended property.
Public theTimeGuid As Guid = _
New Guid(10, 11, 12, 10, 0, 0, 0, 0, 0, 0, 0)
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
'Add our InkCollector initialization and Stroke event handler.
theInkCollector = New InkCollector(Handle)
theInkCollector.Enabled = True
AddHandler theInkCollector.Stroke, AddressOf theStrokeHandler
End Sub
Public Sub theStrokeHandler( _
ByVal sender As Object, _
ByVal e As InkCollectorStrokeEventArgs)
' Write the current time into this stroke.
' First, get the current time as a Long FileTime.
Dim theTime As Long = DateTime.Now.ToFileTime()
' Then store this value using its own Guid
' as a unique retrieval key.
e.Stroke.ExtendedProperties.Add(theTimeGuid, theTime)
End Sub
Public Sub PopulateList()
' Clear the list before repopulating it.
theListBox.Items.Clear()
' Query the InkCollector's Ink for its Strokes collection.
Dim theStrokes As Strokes = theInkCollector.Ink.Strokes
Dim theStroke As Stroke
For Each theStroke In theStrokes
' If the timestamp property exists in this stroke:
If _
theStroke.ExtendedProperties.DoesPropertyExist(theTimeGuid) _
Then
Dim theLong As Long
Dim theTime As String
' Get the raw data out of this stroke's extended
' properties list, using the previously defined
' Guid as a key to the required extended property.
theLong = theStroke.ExtendedProperties(theTimeGuid).Data
' Then turn that Long (as a FileTime) into a string.
theTime = DateTime.FromFileTime(theLong).ToString()
theListBox.Items.Add(theTime)
End If
Next
End Sub
Private Sub theButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles theButton.Click
PopulateList()
End Sub
'Event handler for the form's closed event
Private Sub Form1_Closed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closed
theInkCollector.Dispose()
Set theInkCollector = Nothing
End Sub
End Class
Platforms
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.
Version Information
.NET Framework
Supported in: 3.0
See Also
Reference
Stroke Class
Stroke Members
Microsoft.Ink Namespace
ExtendedProperties
ExtendedProperty