ExtendedProperty.Data Property
ExtendedProperty.Data Property |
Gets or sets the data for the ExtendedProperty object.
Definition
Property Value
System.Object. The data for the ExtendedProperty object.
This property is read/write. This property has no default value.
Remarks
The data consists of information that cannot otherwise be set on the object, such as the time or date that a Stroke object was created.
Examples
[C#]
This C# example stores a a timestamp for each Stroke object when the InkCollector object's Stroke event fires. For each stroke drawn on an InkCollector, theInkCollector, the example stores the timestamp 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 timestamps of the strokes.
//... using Microsoft.Ink; namespace CS_StrokeEvent { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.ListBox listBox1; private System.Windows.Forms.Button button1; //... // 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. listBox1.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 from this stroke's extended // properties list, using the previously defined // Guid as a key to the requiried 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. listBox1.Items.Add(theTime); } } } private void button1_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; } } }
[VB.NET]
This Microsoft® Visual Basic® .NET example stores a a timestamp for each Stroke object when the InkCollector object's Stroke event fires. For each stroke drawn on an InkCollector, theInkCollector, the example stores the timestamp 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 timestamps 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 the 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 the Guid ' as a unique retrieval key. e.Stroke.ExtendedProperties.Add(theTimeGuid, theTime) End Sub Public Sub PopulateList() ' Clear the list before repopulating it. ListBox1.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 from 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() ListBox1.Items.Add(theTime) End If Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.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
See Also