Share via


ExtendedProperties.Contains Method

ExtendedProperties.Contains Method

Indicates whether the ExtendedProperties collection contains a specific ExtendedProperty object.

Definition

Visual Basic .NET Public Function Contains( _
ByVal id As Guid _
) As Boolean
C# public bool Contains(
Guid id
);
Managed C++ public: bool* Contains(
Guid *id
);

Parameters

id System.Guid. The globally unique identifier (GUID) of the ExtendedProperty object to check for.

Return Value

System.Boolean. Whether the ExtendedProperties collection contains a specific ExtendedProperty object.

true The ExtendedProperties collection contains the specific ExtendedProperty object.
false The ExtendedProperties collection does not contain the specific ExtendedProperty object.

Examples

[C#]

This C# example uses the Stroke event handler to store an ExtendedProperty in each Stroke object. The ExtendedProperty object contains a timestamp, which is added to the Stroke by using the Stroke object's ExtendedProperties property. This sample started with a generated C# application and added a button, theButton, and a list box, theListBox, to the main form. When the button is pressed, the list box is populated with a list of the timestamps of the Stroke objects.

//...
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 is used for the Strokes'
        // timestamp ExtendedProperty.
        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 ExtendedProperty with each Stroke.
            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.Contains(theTimeGuid))
                {
                    // Get the raw data out of this Stroke's ExtendedProperties
                    // list by using the previously defined Guid.
                    long theLong = (long)theStroke.ExtendedProperties[theTimeGuid].Data;
                    // Then turn the timestamp (as a FileTime) into a time string.
                    string theTime = DateTime.FromFileTime(theLong).ToString();
                    // Add the string to theListbox.
                    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;
        }
    }
}
                

[VB.NET]

This Microsoft® Visual Basic® .NET example uses the Stroke event handler to store an ExtendedProperty in each Stroke object. The ExtendedProperty object contains a timestamp, which is added to the Stroke by using the Stroke object's ExtendedProperties property. This sample started with a generated Visual Basic .NET application and added a button, theButton, and a list box, theListBox, to the main form. When the button is pressed, the list box is populated with a list of the timestamps of the Stroke objects.

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 is used for the Strokes'
    ' timestamp ExtendedProperty.
    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 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 ExtendedProperty is contained in this Stroke:
            If _
            theStroke.ExtendedProperties.Contains(theTimeGuid) _
            Then
                Dim theLong As Long
                Dim theTime As String
                ' Get the raw data out of this Stroke's ExtendedProperties
                ' list by using the previously defined Guid.
                theLong = theStroke.ExtendedProperties(theTimeGuid).Data
                ' Then turn the timestamp (as a FileTime) into a time 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
                

See Also