Cursor Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar den bild som används för att måla muspekaren.
public ref class Cursor sealed : IDisposable, System::Runtime::Serialization::ISerializable
[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.CursorConverter))]
[System.Serializable]
public sealed class Cursor : IDisposable, System.Runtime.Serialization.ISerializable
[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.CursorConverter))]
public sealed class Cursor : IDisposable, System.Runtime.Serialization.ISerializable
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.CursorConverter))>]
[<System.Serializable>]
type Cursor = class
interface IDisposable
interface ISerializable
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.CursorConverter))>]
type Cursor = class
interface IDisposable
interface ISerializable
Public NotInheritable Class Cursor
Implements IDisposable, ISerializable
- Arv
-
Cursor
- Attribut
- Implementeringar
Exempel
I följande kodexempel visas ett formulär som visar hur du använder en anpassad markör. Den anpassade Cursor filen är inbäddad i programmets resursfil. Exemplet kräver en markör som finns i en markörfil med namnet MyCursor.cur. Om du vill kompilera det här exemplet med hjälp av kommandoraden inkluderar du följande flagga: /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
I följande kodexempel visas kundinformation i en TreeView kontroll. Rotträdsnoderna visar kundnamn och de underordnade trädnoderna visar de ordernummer som tilldelats varje kund. I det här exemplet visas 1 000 kunder med 15 beställningar vardera. Ommålningen TreeView av undertrycks med hjälp BeginUpdate av metoderna och EndUpdate och en väntan Cursor visas medan objekten TreeView skapas och målas TreeNode . Det här exemplet kräver att du har en markörfil med namnet MyWait.cur i programkatalogen. Det kräver också ett Customer objekt som kan innehålla en samling Order objekt och som du har skapat en instans av en TreeView kontroll på .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
Kommentarer
En markör är en liten bild vars plats på skärmen styrs av en pekenhet, till exempel en mus, penna eller trackball. När användaren flyttar pekenheten flyttar operativsystemet markören i enlighet med detta.
Olika markörformer används för att informera användaren om vilken åtgärd musen kommer att ha. När du till exempel redigerar eller väljer text visas vanligtvis en Cursors.IBeam markör. En väntemarkör används ofta för att informera användaren om att en process körs för närvarande. Exempel på processer som du kan låta användaren vänta på är att öppna en fil, spara en fil eller fylla i en kontroll, till exempel en DataGrid, ListBox eller TreeView med en stor mängd data.
Alla kontroller som härleds Control från klassen har en Cursor egenskap. Om du vill ändra markören som visas av muspekaren när den ligger inom kontrollens gränser tilldelar du en Cursor till Cursor kontrollens egenskap. Du kan också visa markörer på programnivå genom att Cursor tilldela egenskapen enCurrent. Om syftet med ditt program till exempel är att redigera en textfil kan du ställa in Current egenskapen på Cursors.WaitCursor att visa en väntemarkör över programmet medan filen läses in eller sparas för att förhindra att mushändelser bearbetas. När processen är klar anger du Current egenskapen till Cursors.Default för programmet för att visa lämplig markör över varje kontrolltyp.
Note
Om du anropar Application.DoEvents innan du återställer Current egenskapen till markören fortsätter programmet att Cursors.Default lyssna efter mushändelser och fortsätter att visa lämpliga Cursor för varje kontroll i programmet.
Markörobjekt kan skapas från flera källor, till exempel handtaget för en befintlig Cursor, en standardfil Cursor , en resurs eller en dataström.
Note
Klassen Cursor stöder inte animerade markörer (.ani filer) eller markörer med andra färger än svartvita.
Om bilden som du använder som markör är för liten kan du använda DrawStretched metoden för att tvinga bilden att fylla markörens gränser. Du kan tillfälligt dölja markören genom att anropa metoden och återställa den Hide genom att anropa Show metoden.
Från och med .NET Framework 4.5.2 ändras Cursor baserat på systemets DPI-inställning när filen app.config innehåller följande post:
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</appSettings>
Konstruktorer
| Name | Description |
|---|---|
| Cursor(IntPtr) |
Initierar en ny instans av klassen Cursor från den angivna Windows referensen. |
| Cursor(Stream) |
Initierar en ny instans av Cursor klassen från den angivna dataströmmen. |
| Cursor(String) |
Initierar en ny instans av Cursor klassen från den angivna filen. |
| Cursor(Type, String) |
Initierar en ny instans av Cursor klassen från den angivna resursen med den angivna resurstypen. |
Egenskaper
| Name | Description |
|---|---|
| Clip |
Hämtar eller anger de gränser som representerar urklippsrektangeln för markören. |
| Current |
Hämtar eller anger ett markörobjekt som representerar musmarkören. |
| Handle |
Hämtar markörens handtag. |
| HotSpot |
Hämtar markörens frekventa punkt. |
| Position |
Hämtar eller anger markörens position. |
| Size |
Hämtar markörens storlek. |
| Tag |
Hämtar eller anger objektet som innehåller data om Cursor. |
Metoder
| Name | Description |
|---|---|
| CopyHandle() |
Kopierar handtaget för den här Cursor. |
| Dispose() |
Släpper alla resurser som används av Cursor. |
| Draw(Graphics, Rectangle) |
Ritar markören på den angivna ytan inom de angivna gränserna. |
| DrawStretched(Graphics, Rectangle) |
Ritar markören i utsträckt format på den angivna ytan inom de angivna gränserna. |
| Equals(Object) |
Returnerar ett värde som anger om markören är lika med den angivna Cursor. |
| Finalize() |
Tillåter att ett objekt försöker frigöra resurser och utföra andra rensningsåtgärder innan det frigörs av skräpinsamling. |
| GetHashCode() |
Hämtar hash-koden för den aktuella Cursor. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| Hide() |
Döljer markören. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| Show() |
Visar markören. |
| ToString() |
Hämtar en läsbar sträng som representerar den här Cursor. |
Operatorer
| Name | Description |
|---|---|
| Equality(Cursor, Cursor) |
Returnerar ett värde som anger om två instanser av Cursor klassen är lika med. |
| Inequality(Cursor, Cursor) |
Returnerar ett värde som anger om två instanser av Cursor klassen inte är lika med. |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Serialiserar objektet. |