Cursor Cursor Cursor Cursor Constructors

定義

多載

Cursor(IntPtr) Cursor(IntPtr) Cursor(IntPtr) Cursor(IntPtr)

從指定的視窗控制代碼,初始化 Cursor 類別的新執行個體。Initializes a new instance of the Cursor class from the specified Windows handle.

Cursor(Stream) Cursor(Stream) Cursor(Stream)

從指定的資料流,初始化 Cursor 類別的新執行個體。Initializes a new instance of the Cursor class from the specified data stream.

Cursor(String) Cursor(String) Cursor(String) Cursor(String)

從指定的檔案,初始化 Cursor 類別的新執行個體。Initializes a new instance of the Cursor class from the specified file.

Cursor(Type, String) Cursor(Type, String) Cursor(Type, String)

從指定的資源,以指定的資源類型,初始化 Cursor 類別的新執行個體。Initializes a new instance of the Cursor class from the specified resource with the specified resource type.

Cursor(IntPtr) Cursor(IntPtr) Cursor(IntPtr) Cursor(IntPtr)

從指定的視窗控制代碼,初始化 Cursor 類別的新執行個體。Initializes a new instance of the Cursor class from the specified Windows handle.

public:
 Cursor(IntPtr handle);
public Cursor (IntPtr handle);
new System.Windows.Forms.Cursor : nativeint -> System.Windows.Forms.Cursor
Public Sub New (handle As IntPtr)

參數

handle
IntPtr IntPtr IntPtr IntPtr

IntPtr,表示要建立之游標的 Windows 控制代碼。An IntPtr that represents the Windows handle of the cursor to create.

例外狀況

範例

下列程式碼範例會從Current游標的Handle處建立游標,並變更其位置和裁剪矩形。The following code example creates a cursor from the Current cursor's Handle, changes its position and clipping rectangle. 結果是,游標會在執行程式碼的位置上向上移動和左50圖元。The result is the cursor will move up and to the left 50 pixels from where it is when the code is executed. 此外,游標的裁剪矩形也會變更為表單的範圍(根據預設,它是使用者的整個畫面)。Additionally, the cursor's clipping rectangle is changed to the bounds of the form (by default it is the user's whole screen). 這個範例會要求您具有Form Button和,以便在按一下時呼叫此程式碼。This example requires that you have a Form and a Button to call this code when it is clicked.

void MoveCursor()
{
   // Set the Current cursor, move the cursor's Position,
   // and set its clipping rectangle to the form.

   this->Cursor = gcnew System::Windows::Forms::Cursor( ::Cursor::Current->Handle );
   ::Cursor::Position = Point(::Cursor::Position.X - 50,::Cursor::Position.Y - 50);
   ::Cursor::Clip = Rectangle(this->Location,this->Size);

}
private void MoveCursor()
{
   // Set the Current cursor, move the cursor's Position,
   // and set its clipping rectangle to the form. 

   this.Cursor = new Cursor(Cursor.Current.Handle);
   Cursor.Position = new Point(Cursor.Position.X - 50, Cursor.Position.Y - 50);
   Cursor.Clip = new Rectangle(this.Location, this.Size);
}
Private Sub MoveCursor()
   ' Set the Current cursor, move the cursor's Position,
   ' and set its clipping rectangle to the form. 

   Me.Cursor = New Cursor(Cursor.Current.Handle)
   Cursor.Position = New Point(Cursor.Position.X - 50, Cursor.Position.Y - 50)
   Cursor.Clip = New Rectangle(Me.Location, Me.Size)
End Sub

備註

當您完成時,您必須釋放資料指標控制碼。You must free the cursor handle when you are done with it. 如需處置資源的詳細資訊,請參閱清除非受控資源For more information about disposing of resources, see Cleaning Up Unmanaged Resources.

Cursor(Stream) Cursor(Stream) Cursor(Stream)

從指定的資料流,初始化 Cursor 類別的新執行個體。Initializes a new instance of the Cursor class from the specified data stream.

public:
 Cursor(System::IO::Stream ^ stream);
public Cursor (System.IO.Stream stream);
new System.Windows.Forms.Cursor : System.IO.Stream -> System.Windows.Forms.Cursor

參數

stream
Stream Stream Stream Stream

要從其中載入 Cursor 的資料流。The data stream to load the Cursor from.

範例

下列程式Stream OpenFile 代碼範例會從的方法所建立的OpenFileDialog載入資料指標。The following code example loads a cursor from a Stream created by the OpenFile method of an OpenFileDialog. 當呼叫方法時, OpenFileDialog會向使用者顯示,而當為。When the method is called, an OpenFileDialog is displayed to the user and when a. 目前已選取 [檔案] 並關閉對話方塊,檔案隨即開啟,並Stream會使用傳回的來Cursor建立。CUR file is selected and the dialog closed, the file is opened and the Stream returned is used to create a Cursor.

private:
   void SetCursor()
   {
      // Display an OpenFileDialog so the user can select a cursor.
      OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
      openFileDialog1->Filter = "Cursor Files|*.cur";
      openFileDialog1->Title = "Select a Cursor File";
      openFileDialog1->ShowDialog();

      // If a .cur file was selected, open it.
      if (  !openFileDialog1->FileName->Equals( "" ) )
      {
         // Assign the cursor in the stream to the form's Cursor property.
         this->Cursor = gcnew System::Windows::Forms::Cursor( openFileDialog1->OpenFile() );
      }
   }
private void SetCursor()
{
   // Display an OpenFileDialog so the user can select a cursor.
   OpenFileDialog openFileDialog1 = new OpenFileDialog();
   openFileDialog1.Filter = "Cursor Files|*.cur";
   openFileDialog1.Title = "Select a Cursor File";
   openFileDialog1.ShowDialog();

   // If a .cur file was selected, open it.
   if(openFileDialog1.FileName != "")
   {
      // Assign the cursor in the stream to the form's Cursor property.
      this.Cursor = new Cursor(openFileDialog1.OpenFile());
   }
}
Private Sub SetCursor()
   ' Display an OpenFileDialog so the user can select a Cursor.
   Dim openFileDialog1 As New OpenFileDialog()
   openFileDialog1.Filter = "Cursor Files|*.cur"
   openFileDialog1.Title = "Select a Cursor File"
   openFileDialog1.ShowDialog()
         
   ' If a .cur file was selected, open it.
   If openFileDialog1.FileName <> "" Then
      ' Assign the cursor in the stream to the form's Cursor property.
      Me.Cursor = New Cursor(openFileDialog1.OpenFile())
   End If
End Sub     

備註

所指定stream的資料流程必須包含資料指標(檔案)。The data stream specified by stream must contain a cursor (.cur) file.

注意

Cursor類別不支援動畫資料指標(ani 檔案)。Animated cursors (.ani files) are not supported by the Cursor class.

另請參閱

Cursor(String) Cursor(String) Cursor(String) Cursor(String)

從指定的檔案,初始化 Cursor 類別的新執行個體。Initializes a new instance of the Cursor class from the specified file.

public:
 Cursor(System::String ^ fileName);
public Cursor (string fileName);
new System.Windows.Forms.Cursor : string -> System.Windows.Forms.Cursor
Public Sub New (fileName As String)

參數

fileName
String String String String

要載入的游標檔。The cursor file to load.

範例

下列程式碼範例會在TreeView控制項中顯示客戶資訊。The following code example displays customer information in a TreeView control. 根樹狀節點會顯示客戶名稱,而子樹狀節點則會顯示指派給每個客戶的訂單號碼。The root tree nodes display customer names, and the child tree nodes display the order numbers assigned to each customer. 在此範例中,1000客戶會以15個訂單顯示。In this example, 1,000 customers are displayed with 15 orders each. TreeView TreeNode Cursor使用和方法會TreeView隱藏的重新繪製,而且會在建立和繪製物件時顯示等候。 EndUpdate BeginUpdateThe repainting of the TreeView is suppressed by using the BeginUpdate and EndUpdate methods, and a wait Cursor is displayed while the TreeView creates and paints the TreeNode objects. 這個範例需要您擁有Customer可保存Order物件集合的物件。This example requires that you have a Customer object that can hold a collection of Order objects. 此外,您也需要在TreeView Form上建立控制項的實例。It also requires that you have created an instance of a TreeView control on a Form.

// The basic Customer class.
ref class Customer: public System::Object
{
private:
   String^ custName;

protected:
   ArrayList^ custOrders;

public:
   Customer( String^ customername )
   {
      custName = "";
      custOrders = gcnew ArrayList;
      this->custName = customername;
   }


   property String^ CustomerName 
   {
      String^ get()
      {
         return this->custName;
      }

      void set( String^ value )
      {
         this->custName = value;
      }

   }

   property ArrayList^ CustomerOrders 
   {
      ArrayList^ get()
      {
         return this->custOrders;
      }

   }

};


// End Customer class
// The basic customer Order class.
ref class Order: public System::Object
{
private:
   String^ ordID;

public:
   Order( String^ orderid )
   {
      ordID = "";
      this->ordID = orderid;
   }


   property String^ OrderID 
   {
      String^ get()
      {
         return this->ordID;
      }

      void set( String^ value )
      {
         this->ordID = value;
      }

   }

};
// End Order class



void FillMyTreeView()
{
   // Add customers to the ArrayList of Customer objects.
   for ( int x = 0; x < 1000; x++ )
   {
      customerArray->Add( gcnew Customer( "Customer " + x ) );
   }
   
   // Add orders to each Customer object in the ArrayList.
   IEnumerator^ myEnum = customerArray->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Customer^ customer1 = safe_cast<Customer^>(myEnum->Current);
      for ( int y = 0; y < 15; y++ )
      {
         customer1->CustomerOrders->Add( gcnew Order( "Order " + y ) );
      }
   }

   // Display a wait cursor while the TreeNodes are being created.
   ::Cursor::Current = gcnew System::Windows::Forms::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.
   myEnum = customerArray->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Customer^ customer2 = safe_cast<Customer^>(myEnum->Current);
      treeView1->Nodes->Add( gcnew 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 = safe_cast<Order^>(myEnum->Current);
         treeView1->Nodes[ customerArray->IndexOf( customer2 ) ]->Nodes->Add( gcnew TreeNode( customer2->CustomerName + "." + order1->OrderID ) );
      }
   }
   
   // Reset the cursor to the default for all controls.
   ::Cursor::Current = Cursors::Default;
   
   // Begin repainting the TreeView.
   treeView1->EndUpdate();
}

// The basic Customer class.
public class Customer : System.Object
{
   private string custName = "";
   protected ArrayList custOrders = new ArrayList();

   public Customer(string customername)
   {
      this.custName = customername;
   }

   public string CustomerName
   {      
      get{return this.custName;}
      set{this.custName = value;}
   }

   public ArrayList CustomerOrders 
   {
      get{return this.custOrders;}
   }

} // End Customer class 


// The basic customer Order class.
public class Order : System.Object
{
   private string ordID = "";

   public Order(string orderid)
   {
      this.ordID = orderid;
   }

   public string OrderID
   {      
      get{return this.ordID;}
      set{this.ordID = value;}
   }

} // End Order class

// 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();
}
Public Class Customer
   Inherits [Object]
   Private custName As String = ""
   Friend custOrders As New ArrayList()

   Public Sub New(ByVal customername As String)
      Me.custName = customername
   End Sub

   Public Property CustomerName() As String
      Get
         Return Me.custName
      End Get
      Set(ByVal Value As String)
         Me.custName = Value
      End Set
   End Property

   Public ReadOnly Property CustomerOrders() As ArrayList
      Get
         Return Me.custOrders
      End Get
   End Property
End Class 'End Customer class


Public Class Order
   Inherits [Object]
   Private ordID As String

   Public Sub New(ByVal orderid As String)
      Me.ordID = orderid
   End Sub

   Public Property OrderID() As String
      Get
         Return Me.ordID
      End Get
      Set(ByVal Value As String)
         Me.ordID = Value
      End Set
   End Property
End Class ' End Order class

' 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

備註

fileName參數必須參考標準的資料指標(檔案)。The fileName parameter must reference a standard cursor (.cur) file.

注意

Cursor類別不支援動畫資料指標(ani 檔案)。Animated cursors (.ani files) are not supported by the Cursor class.

Cursor(Type, String) Cursor(Type, String) Cursor(Type, String)

從指定的資源,以指定的資源類型,初始化 Cursor 類別的新執行個體。Initializes a new instance of the Cursor class from the specified resource with the specified resource type.

public:
 Cursor(Type ^ type, System::String ^ resource);
public Cursor (Type type, string resource);
new System.Windows.Forms.Cursor : Type * string -> System.Windows.Forms.Cursor

參數

type
Type Type Type Type

資源 TypeThe resource Type.

resource
String String String String

資源名稱。The name of the resource.

範例

下列程式碼範例會顯示一個表單,示範如何使用此Cursor函式來使用自訂資料指標。The following code example displays a form that demonstrates using a custom cursor by using the Cursor constructor. 自訂Cursor會內嵌在應用程式的資源檔中。The custom Cursor is embedded in the application's resource file. 此範例要求您必須將資料指標包含在名為MyCursor.cur的資料指標檔案中。The example requires that you have a cursor contained in a cursor file named MyCursor.cur. 若要使用命令列來編譯此範例,請包含下列旗標:/res:MyCursor.Cur, CustomCursor.MyCursor.CurTo compile this example using the command line, include the following flag: /res:MyCursor.Cur, CustomCursor.MyCursor.Cur

using System;
using System.Drawing;
using System.Windows.Forms;

namespace CustomCursor
{
    public class Form1 : System.Windows.Forms.Form
    {
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }

        public Form1()
        {
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Text = "Cursor Example";
            
            // The following generates a cursor from an embedded resource.
            
            // To add a custom cursor, create a bitmap
            //        1. Add a new cursor file to your project: 
            //                Project->Add New Item->General->Cursor File

            // --- To make the custom cursor an embedded resource  ---
            
            // In Visual Studio:
            //        1. Select the cursor file in the Solution Explorer
            //        2. Choose View->Properties.
            //        3. In the properties window switch "Build Action" to "Embedded Resources"

            // On the command line:
            //        Add the following flag:
            //            /res:CursorFileName.cur,Namespace.CursorFileName.cur
            //        
            //        Where "Namespace" is the namespace in which you want to use the cursor
            //        and   "CursorFileName.cur" is the cursor filename.

            // The following line uses the namespace from the passed-in type
            // and looks for CustomCursor.MyCursor.Cur in the assemblies manifest.
	    // NOTE: The cursor name is acase sensitive.
            this.Cursor = new Cursor(GetType(), "MyCursor.cur");  
           
        }
    }
}
Imports System.Drawing
Imports System.Windows.Forms

Namespace CustomCursor
   
   Public Class Form1
      Inherits System.Windows.Forms.Form
      
      <System.STAThread()> _
      Public Shared Sub Main()
         System.Windows.Forms.Application.Run(New Form1())
      End Sub

      Public Sub New()

         Me.ClientSize = New System.Drawing.Size(292, 266)
         Me.Text = "Cursor Example"
         
        ' The following generates a cursor from an embedded resource.
         
        'To add a custom cursor, create a bitmap
        '       1. Add a new cursor file to your project: 
        '               Project->Add New Item->General->Cursor File

        '--- To make the custom cursor an embedded resource  ---

        'In Visual Studio:
        '       1. Select the cursor file in the Solution Explorer
        '       2. Choose View->Properties.
        '       3. In the properties window switch "Build Action" to "Embedded Resources"

        'On the command line:
        '       Add the following flag:
        '           /res:CursorFileName.cur,Namespace.CursorFileName.cur

        '       Where "Namespace" is the namespace in which you want to use the cursor
        '       and   "CursorFileName.cur" is the cursor filename.

        'The following line uses the namespace from the passed-in type
        'and looks for CustomCursor.MyCursor.cur in the assemblies manifest.
        'NOTE: The cursor name is acase sensitive.
        Me.Cursor = New Cursor(Me.GetType(), "MyCursor.cur")
      End Sub
   End Class 'Form1
End Namespace 'CustomCursor

備註

以下範例示範如何將游標內嵌為應用程式內的資源。The following is an example of how to embed a cursor as a resource within your application. 若要內嵌資源,請參考資源名稱,後面接著逗號,然後是其完整元件路徑。To embed the resource, reference the resource name followed by a comma, then its full assembly path. 如要瞭解如何從內嵌資源載入游標,請參閱範例一節。See the Example section to learn how to load the cursor from the embedded resource.

Using the C# compiler:  
csc /resource:"MyWaitCursor.cur","MyCursors.MyWaitCursor.cur" MyCursor.cs  
Using the Visual Basic compiler:  
vbc /resource:"MyWaitCursor.cur","MyCursors.MyWaitCursor.cur" MyCursor.vb  

注意

在編譯時,以及在程式碼中參考它時的資源參考,都是C#和 Visual Basic 編譯器的區分大小寫。The resource reference when compiling as well as when referencing it in code, is case sensitive for both the C# and Visual Basic compilers.

適用於