列挙子が指している 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 メソッドを呼び出した後に、コレクションの最初の要素に列挙子を進めるためには、Current プロパティの値を読み取る前に MoveNext メソッドを呼び出す必要があります。そうしない場合、Current プロパティは未定義になります。
MoveNext メソッドの前回の呼び出しで false が返された場合、Current プロパティにより例外がスローされます。MoveNext メソッドの前回の呼び出しで false が返された場合、列挙子は Strokes コレクションの末尾に到達しています。
Current プロパティは、列挙子の位置を移動しません。Current プロパティを連続して呼び出した場合、MoveNext メソッドまたは Reset メソッドが呼び出されるまでは同じオブジェクトが返されます。
コレクションが変更されない限り、列挙子は有効なままです。要素の追加、変更、削除などの変更がコレクションに対して実行されると、列挙子は回復不可能な無効状態になります。MoveNext メソッドまたは Reset メソッドの次の呼び出しで、InvalidOperationException 例外がスローされます。コレクションが MoveNext メソッドの呼び出しと Current プロパティの呼び出しとの間で変更された場合は、列挙子が既に無効になっていても、Current プロパティは設定した要素を返します。
例
これらの例では、Strokes コレクションを列挙して、コレクションに含まれる各 Stroke オブジェクトを取得する方法を 2 つ示します。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