Cursor 构造函数
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
初始化 Cursor 类的新实例。
重载
| Cursor(IntPtr) | 从指定的 Windows 句柄初始化 Cursor 类的新实例。 | 
| Cursor(Stream) | 从指定的数据流初始化 Cursor 类的新实例。 | 
| Cursor(String) | 从指定的文件初始化 Cursor 类的新实例。 | 
| Cursor(Type, String) | 从具有指定资源类型的指定资源初始化 Cursor 类的新实例。 | 
Cursor(IntPtr)
- Source:
- Cursor.cs
- Source:
- Cursor.cs
- Source:
- Cursor.cs
从指定的 Windows 句柄初始化 Cursor 类的新实例。
public:
 Cursor(IntPtr handle);public Cursor(IntPtr handle);new System.Windows.Forms.Cursor : nativeint -> System.Windows.Forms.CursorPublic Sub New (handle As IntPtr)参数
例外
              handle 为 Zero。
示例
下面的代码示例从 Current 游标的 Handle创建一个游标,更改其位置和剪裁矩形。 结果是光标将向上移动,并在执行代码时向左移动 50 像素。 此外,光标的剪裁矩形将更改为窗体的边界, (默认情况下,它是用户的整个屏幕) 。 此示例要求在单击此代码时具有 Form 和 Button 来调用此代码。
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
注解
使用完光标句柄后,必须释放游标句柄。 有关释放资源的详细信息,请参阅 清理非托管资源。
适用于
Cursor(Stream)
- Source:
- Cursor.cs
- Source:
- Cursor.cs
- Source:
- Cursor.cs
从指定的数据流初始化 Cursor 类的新实例。
public:
 Cursor(System::IO::Stream ^ stream);public Cursor(System.IO.Stream stream);new System.Windows.Forms.Cursor : System.IO.Stream -> System.Windows.Forms.CursorPublic Sub New (stream As Stream)参数
示例
下面的代码示例从 Stream 由 OpenFile 的 方法 OpenFileDialog创建的 加载游标。 调用 方法时, OpenFileDialog 向用户显示 ,并在 时显示 。 选择 CUR 文件并关闭对话框,打开文件,返回 Stream 的 用于创建 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 数据流必须包含游标 (.cur) 文件。
注意
类不支持 Cursor 动画光标 (.ani 文件) 。
另请参阅
适用于
Cursor(String)
- Source:
- Cursor.cs
- Source:
- Cursor.cs
- Source:
- Cursor.cs
从指定的文件初始化 Cursor 类的新实例。
public:
 Cursor(System::String ^ fileName);public Cursor(string fileName);new System.Windows.Forms.Cursor : string -> System.Windows.Forms.CursorPublic Sub New (fileName As String)参数
- fileName
- String
要加载的光标文件。
示例
下面的代码示例在 控件中 TreeView 显示客户信息。 根树节点显示客户名称,子树节点显示分配给每个客户的订单号。 在此示例中,将显示 1,000 个客户,每个客户有 15 个订单。 使用 和 方法禁止重新绘制 , TreeView 并在 创建和绘制TreeNode对象时TreeView显示等待Cursor。EndUpdateBeginUpdate 此示例要求你有一个 Customer 可以保存 对象集合的 Order 对象。 它还要求已在 上Form创建了 控件的TreeView实例。
// 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
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
' 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 必须引用标准游标 (.cur) 文件。
注意
类不支持 Cursor 动画光标 (.ani 文件) 。
适用于
Cursor(Type, String)
- Source:
- Cursor.cs
- Source:
- Cursor.cs
- Source:
- Cursor.cs
从具有指定资源类型的指定资源初始化 Cursor 类的新实例。
public:
 Cursor(Type ^ type, System::String ^ resource);public Cursor(Type type, string resource);new System.Windows.Forms.Cursor : Type * string -> System.Windows.Forms.CursorPublic Sub New (type As Type, resource As String)参数
- resource
- String
资源的名称。
示例
下面的代码示例显示一个窗体,该窗体演示如何使用 Cursor 构造函数使用自定义游标。 自定义 Cursor 嵌入在应用程序的资源文件中。 该示例要求将游标包含在名为 的 MyCursor.cur游标文件中。 若要使用命令行编译此示例,请包含以下标志: /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
End Namespace 'CustomCursor
注解
以下示例演示如何将游标作为资源嵌入应用程序中。 若要嵌入资源,请引用资源名称,后跟逗号,然后引用其完整程序集路径。 请参阅示例部分,了解如何从嵌入的资源加载游标。
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 编译器都区分大小写。