Cursor 생성자

정의

Cursor 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Cursor class.

오버로드

Cursor(IntPtr)

지정된 창 핸들에서 Cursor 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Cursor class from the specified Windows handle.

Cursor(Stream)

지정된 데이터 스트림에서 Cursor 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Cursor class from the specified data stream.

Cursor(String)

지정된 파일에서 Cursor 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Cursor class from the specified file.

Cursor(Type, String)

지정된 리소스 유형을 사용하여 지정된 리소스에서 Cursor 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the Cursor class from the specified resource with the specified resource type.

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입니다.An IntPtr that represents the Windows handle of the cursor to create.

예외

handle이(가) Zero인 경우handle is Zero.

예제

다음 코드 예제에서는 커서의 커서를 만들어 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 클래스의 새 인스턴스를 초기화합니다.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
Public Sub New (stream As 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 커서 (.cur) 파일을 포함 해야 합니다.The data stream specified by stream must contain a cursor (.cur) file.

참고

애니메이션 커서 (ani 파일)는 클래스에서 지원 되지 않습니다 Cursor .Animated cursors (.ani files) are not supported by the Cursor class.

추가 정보

적용 대상

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

로드할 커서 파일입니다.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및 메서드를 사용 하 여의 BeginUpdate 다시 표시를 억제 EndUpdate 하 고가 Cursor TreeView 개체를 만들고 칠하는 동안 대기를 표시 합니다 TreeNode .The 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


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) 파일을 참조 해야 합니다.The fileName parameter must reference a standard cursor (.cur) file.

참고

애니메이션 커서 (ani 파일)는 클래스에서 지원 되지 않습니다 Cursor .Animated cursors (.ani files) are not supported by the Cursor class.

적용 대상

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
Public Sub New (type As Type, resource As String)

매개 변수

type
Type

리소스 Type입니다.The resource Type.

resource
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
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.

적용 대상