Strokes.StrokesEnumerator.Current 属性

获取枚举数指向的 Strokes 集合中的 Stroke 对象。

命名空间:  Microsoft.Ink
程序集:  Microsoft.Ink(在 Microsoft.Ink.dll 中)

语法

声明
Public ReadOnly Property Current As Stroke
用法
Dim instance As Strokes..::.StrokesEnumerator
Dim value As Stroke

value = instance.Current
public Stroke Current { get; }
public:
property Stroke^ Current {
    Stroke^ get ();
}
/** @property */
public Stroke get_Current()
public function get Current () : Stroke

属性值

类型:Microsoft.Ink.Stroke
枚举数指向的 Strokes 集合中的 Stroke 对象。

备注

创建 Strokes.StrokesEnumerator 枚举数或调用 Reset 方法后,必须先通过调用 MoveNext 方法将枚举数前移到集合的第一个元素,然后才能读取 Current 属性的值;否则 Current 属性是未定义的。

如果上次调用 MoveNext 方法返回的是 false,则 Current 属性会引发异常。如果上次调用 MoveNext 方法返回的是 false,则枚举数将到达 Strokes 集合的末尾。

Current 属性不移动枚举数的位置。连续调用 Current 属性将返回相同的对象,直到调用 MoveNextReset 方法为止。

只要该集合保持不变,枚举数也就保持有效。如果对该集合进行了更改(例如添加、修改或删除元素),则枚举数将失效且不可恢复。下次调用 MoveNextReset 方法将引发 InvalidOperationException 异常。如果在调用 MoveNext 方法和调用 Current 属性之间修改集合,那么即使枚举数已经无效,Current 属性也将返回它所设置成的元素。

示例

这些示例演示两种枚举 Strokes 集合以检索集合中包含的每个 Stroke 对象的方法。Strokes 集合由 Ink.Strokes 属性返回。

此示例获取 Strokes 集合的 IEnumerator,然后使用它遍历该集合。

Private Sub EnumerateStrokesWithEnumerator(ByVal mInk As Ink)
    ' access the Strokes property via using statement
    ' to insure that the object mStrokes is disposed when finished
    ' Otherwise, you will have a memory leak
    Using mStrokes As Strokes = mInk.Strokes
        Dim mStrokesEnumerator As IEnumerator = mStrokes.GetEnumerator()
        mStrokesEnumerator.Reset()
        While (mStrokesEnumerator.MoveNext())
            Dim S As Stroke = DirectCast(mStrokesEnumerator.Current, Stroke)
            Me.listBoxStrokeId.Items.Add(S.Id)
        End While
    End Using
End Sub
private void EnumerateStrokesWithEnumerator(Ink mInk)
{
    // access the Strokes property via using statement
    // to insure that the object mStrokes is disposed when finished
    // Otherwise, you will have a memory leak
    using (Strokes mStrokes = mInk.Strokes)
    {
        IEnumerator mStrokesEnumerator = mStrokes.GetEnumerator();
        mStrokesEnumerator.Reset();
        while (mStrokesEnumerator.MoveNext())
        {
            Stroke S = (Stroke)mStrokesEnumerator.Current;
            this.listBoxStrokeId.Items.Add(S.Id);
        }
    }
}

此示例使用 foreach 语句,该语句调用内部代码中的 GetEnumerator 方法,该方法是编译器为支持此语句而生成的。

Private Sub EnumerateStrokesWithForEach(ByVal mInk As Ink)
    ' access the Strokes property via using statement
    ' to insure that the object mStrokes is disposed when finished
    ' Otherwise, you will have a memory leak
    Using mStrokes As Strokes = mInk.Strokes
        For Each S As Stroke In mStrokes
            Me.listBoxStrokeId.Items.Add(S.Id)
        Next
    End Using
End Sub
private void EnumerateStrokesWithForEach(Ink mInk)
{    
    // access the Strokes property via using statement
    // to insure that the object mStrokes is disposed when finished
    // Otherwise, you will have a memory leak
    using (Strokes mStrokes = mInk.Strokes)
    {
        foreach (Stroke S in mStrokes)
        {
            this.listBoxStrokeId.Items.Add(S.Id);
        }
    }
}

平台

Windows Vista

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

版本信息

.NET Framework

受以下版本支持:3.0

另请参见

参考

Strokes.StrokesEnumerator 类

Strokes.StrokesEnumerator 成员

Microsoft.Ink 命名空间

Strokes

Stroke

Strokes.StrokesEnumerator.MoveNext

Strokes.StrokesEnumerator.Reset

其他资源

System.Collections.IEnumerator