Cursor.Current プロパティ
マウス カーソルを表すカーソル オブジェクトを取得または設定します。
Public Shared Property Current As Cursor
[C#]
public static Cursor Current {get; set;}
[C++]
public: __property static Cursor* get_Current();public: __property static void set_Current(Cursor*);
[JScript]
public static function get Current() : Cursor;public static function set Current(Cursor);
プロパティ値
マウス カーソルを表す Cursor 。マウス カーソルが表示されない場合、既定値は null 参照 (Visual Basic では Nothing) です。
解説
Current プロパティを設定すると、現在表示されているカーソルが変更され、アプリケーションがマウス イベントの待機を中断します。たとえば、 TreeView 、 DataGrid 、 ListBox の各コントロールに大量のデータを格納し始める前に、 Current プロパティを Cursors.WaitCursor に設定できます。ループの完了後に、このプロパティの設定を Cursors.Default に戻して、各コントロールの適切なカーソルを表示します。
メモ Current プロパティを Cursors.Default カーソルにリセットする前に Application.DoEvents を呼び出すと、アプリケーションがマウス イベントの待機を再開し、アプリケーションの各コントロールの適切な Cursor の表示を再開します。
使用例
[Visual Basic, C#, C++] TreeView コントロールに顧客情報を表示する例を次に示します。ルート ツリー ノードに顧客名が表示され、各顧客に割り当てられた発注番号が子ツリー ノードに表示されます。この例では、1,000 人の顧客が表示され、顧客ごとに 15 の発注内容が示されます。 BeginUpdate メソッドと EndUpdate メソッドを使用すると、 TreeView は再描画されません。 TreeView が TreeNode オブジェクトを作成して描画する間、待機 Cursor が表示されます。この例は、アプリケーション ディレクトリに MyWait.cur
という名前のカーソル ファイルが格納されていることを前提にしています。また、 Order
オブジェクトのコレクションを保持できる Customer
オブジェクトがあることも前提としています。 TreeView コントロールのインスタンスが Form 上に作成されていることも前提にしています。
' Create a new ArrayList to hold the Customer objects.
Private customerArray As New ArrayList()
Private Sub FillMyTreeView()
' Add customers to the ArrayList of Customer objects.
Dim x As Integer
For x = 0 To 999
customerArray.Add(New Customer("Customer" + x.ToString()))
Next x
' Add orders to each Customer object in the ArrayList.
Dim customer1 As Customer
For Each customer1 In customerArray
Dim y As Integer
For y = 0 To 14
customer1.CustomerOrders.Add(New Order("Order" + y.ToString()))
Next y
Next customer1
' Display a wait cursor while the TreeNodes are being created.
Cursor.Current = New Cursor("MyWait.cur")
' Suppress repainting the TreeView until all the objects have been created.
treeView1.BeginUpdate()
' Clear the TreeView each time the method is called.
treeView1.Nodes.Clear()
' Add a root TreeNode for each Customer object in the ArrayList.
Dim customer2 As Customer
For Each customer2 In customerArray
treeView1.Nodes.Add(New TreeNode(customer2.CustomerName))
' Add a child TreeNode for each Order object in the current Customer object.
Dim order1 As Order
For Each order1 In customer2.CustomerOrders
treeView1.Nodes(customerArray.IndexOf(customer2)).Nodes.Add( _
New TreeNode(customer2.CustomerName + "." + order1.OrderID))
Next order1
Next customer2
' Reset the cursor to the default for all controls.
Cursor.Current = System.Windows.Forms.Cursors.Default
' Begin repainting the TreeView.
treeView1.EndUpdate()
End Sub 'FillMyTreeView
[C#]
// Create a new ArrayList to hold the Customer objects.
private ArrayList customerArray = new ArrayList();
private void FillMyTreeView()
{
// Add customers to the ArrayList of Customer objects.
for(int x=0; x<1000; x++)
{
customerArray.Add(new Customer("Customer" + x.ToString()));
}
// Add orders to each Customer object in the ArrayList.
foreach(Customer customer1 in customerArray)
{
for(int y=0; y<15; y++)
{
customer1.CustomerOrders.Add(new Order("Order" + y.ToString()));
}
}
// Display a wait cursor while the TreeNodes are being created.
Cursor.Current = new Cursor("MyWait.cur");
// Suppress repainting the TreeView until all the objects have been created.
treeView1.BeginUpdate();
// Clear the TreeView each time the method is called.
treeView1.Nodes.Clear();
// Add a root TreeNode for each Customer object in the ArrayList.
foreach(Customer customer2 in customerArray)
{
treeView1.Nodes.Add(new TreeNode(customer2.CustomerName));
// Add a child treenode for each Order object in the current Customer object.
foreach(Order order1 in customer2.CustomerOrders)
{
treeView1.Nodes[customerArray.IndexOf(customer2)].Nodes.Add(
new TreeNode(customer2.CustomerName + "." + order1.OrderID));
}
}
// Reset the cursor to the default for all controls.
Cursor.Current = Cursors.Default;
// Begin repainting the TreeView.
treeView1.EndUpdate();
}
[C++]
void FillMyTreeView() {
// Add customers to the ArrayList of Customer objects.
for (int x=0; x<1000; x++) {
customerArray->Add(new Customer(String::Concat(S"Customer ", __box(x))));
}
// Add orders to each Customer object in the ArrayList.
IEnumerator* myEnum = customerArray->GetEnumerator();
while (myEnum->MoveNext()) {
Customer* customer1 = __try_cast<Customer*>(myEnum->Current);
for (int y=0; y<15; y++) {
customer1->CustomerOrders->Add(new Order(String::Concat(S"Order ", __box(y))));
}
}
// Display a wait cursor while the TreeNodes are being created.
Cursor::Current = new System::Windows::Forms::Cursor(S"MyWait.cur");
// Suppress repainting the TreeView until all the objects have been created.
treeView1->BeginUpdate();
// Clear the TreeView each time the method is called.
treeView1->Nodes->Clear();
// Add a root TreeNode for each Customer object in the ArrayList.
while (myEnum->MoveNext()) {
Customer* customer2 = __try_cast<Customer*>(myEnum->Current);
treeView1->Nodes->Add(new TreeNode(customer2->CustomerName));
// Add a child treenode for each Order object in the current Customer object.
IEnumerator* myEnum = customer2->CustomerOrders->GetEnumerator();
while (myEnum->MoveNext()) {
Order* order1 = __try_cast<Order*>(myEnum->Current);
treeView1->Nodes->Item[customerArray->IndexOf(customer2)]->Nodes->Add(
new TreeNode(String::Concat(customer2->CustomerName, S".", order1->OrderID)));
}
}
// Reset the cursor to the default for all controls.
Cursor::Current = Cursors::Default;
// Begin repainting the TreeView.
treeView1->EndUpdate();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
.NET Framework セキュリティ:
- UIPermission 。 UIPermissionWindow.SafeSubWindows (関連する列挙体)
参照
Cursor クラス | Cursor メンバ | System.Windows.Forms 名前空間 | DoEvents