Share via


ExtendedProperties.Add Method

Creates an ExtendedProperty object and adds it to the ExtendedProperties collection.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Syntax

'Declaration
Public Function Add ( _
    id As Guid, _
    data As Object _
) As ExtendedProperty
'Usage
Dim instance As ExtendedProperties 
Dim id As Guid 
Dim data As Object 
Dim returnValue As ExtendedProperty 

returnValue = instance.Add(id, data)
public ExtendedProperty Add(
    Guid id,
    Object data
)
public:
ExtendedProperty^ Add(
    Guid id, 
    Object^ data
)
public function Add(
    id : Guid, 
    data : Object
) : ExtendedProperty

Parameters

Return Value

Type: Microsoft.Ink.ExtendedProperty
The new ExtendedProperty object.

Remarks

Note

You cannot store an empty ExtendedProperty object. The ExtendedProperty object must contain Data before it can be stored. If you add an ExtendedProperty object to a Stroke object to use at a later time, for example, an exception is thrown if the ExtendedProperty object contains no data.

Note

If you call this method with the id parameter set to a globally unique identifier (GUID) that already exists in the ExtendedProperties collection, the new data replaces the existing data for the ExtendedProperty object with that GUID. To create additional ExtendedProperty objects, give them unique values for the id parameter.

Examples

This example demonstrates how you can subscribe to the CursorDown event, and the Stroke event to calculate the length of time it takes the user to create a stroke.

At the beginning of a stroke, the CursorDown event fires. The current time is placed into the ExtendedProperties collection of the Stroke object.

Private Sub mInkObject_CursorDown(ByVal sender As Object, ByVal e As InkCollectorCursorDownEventArgs)
    ' add extended property indicating the time the stroke started 
    ' STROKE_START_GUID is class level string via GUID generator
    e.Stroke.ExtendedProperties.Add(New Guid(STROKE_START_GUID), DateTime.Now)
End Sub
private void mInkObject_CursorDown(object sender, InkCollectorCursorDownEventArgs e)
{
    // add extended property indicating the time the stroke started 
    // STROKE_START_GUID is class level string via GUID generator
    e.Stroke.ExtendedProperties.Add(new Guid(STROKE_START_GUID), DateTime.Now);
}

When the stroke is complete, the Stroke event fires. The start time is retrieved from the ExtendedProperties collection of the Stroke object, and used to calculate the elapsed time.

Private Sub mInkObject_Stroke1(ByVal sender As Object, ByVal e As InkCollectorStrokeEventArgs)
    ' check to see if extended property for start time exists 
    ' Attempting to access an extended property that hasn't been created throws an exception 
    ' STROKE_START_GUID is class level string via GUID generator 
    If (e.Stroke.ExtendedProperties.DoesPropertyExist(New Guid(STROKE_START_GUID))) Then 

        Dim startTime As DateTime = DirectCast(e.Stroke.ExtendedProperties(New Guid(STROKE_START_GUID)).Data, DateTime)
        Dim endTime As DateTime = DateTime.Now
        Dim span As TimeSpan = New TimeSpan(endTime.Ticks - startTime.Ticks)

        ' add extended property indicating the time the stroke ended 
        ' STROKE_END_GUID is class level string via GUID generator
        e.Stroke.ExtendedProperties.Add(New Guid(STROKE_END_GUID), endTime)

        ' display the number of seconds in creating this stroke 
        Me.statusLabelStrokeTime.Text = span.TotalSeconds.ToString()
    End If 
End Sub
private void mInkObject_Stroke1(object sender, InkCollectorStrokeEventArgs e)
{
    // check to see if extended property for start time exists 
    // Attempting to access an extended property that hasn't been created throws an exception 
    // STROKE_START_GUID is class level string via GUID generator 
    if (e.Stroke.ExtendedProperties.DoesPropertyExist(new Guid(STROKE_START_GUID)))
    {
        DateTime startTime = (DateTime)e.Stroke.ExtendedProperties[new Guid(STROKE_START_GUID)].Data;
        DateTime endTime = DateTime.Now;
        TimeSpan span = new TimeSpan(endTime.Ticks - startTime.Ticks);

        // add extended property indicating the time the stroke ended 
        // STROKE_END_GUID is class level string via GUID generator
        e.Stroke.ExtendedProperties.Add(new Guid(STROKE_END_GUID), endTime);

        // display the number of seconds in creating this stroke 
        this.statusLabelStrokeTime.Text = span.TotalSeconds.ToString();
    }
}

Platforms

Windows 7, Windows Vista, Windows Server 2008 R2, Windows Server 2008

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

ExtendedProperties Class

ExtendedProperties Members

Microsoft.Ink Namespace

ExtendedProperty

Strokes