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 属性将返回相同的对象,直到调用 MoveNext 或 Reset 方法为止。
只要该集合保持不变,枚举数也就保持有效。如果对该集合进行了更改(例如添加、修改或删除元素),则枚举数将失效且不可恢复。下次调用 MoveNext 或 Reset 方法将引发 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.MoveNext
Strokes.StrokesEnumerator.Reset