Cursors 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供由 Windows 窗体应用程序使用的 Cursor 对象的集合。
public ref class Cursors sealed
public ref class Cursors abstract sealed
public sealed class Cursors
public static class Cursors
type Cursors = class
Public NotInheritable Class Cursors
Public Class Cursors
- 继承
-
Cursors
示例
下面的示例演示如何使用 Control.Cursor 属性、 Cursor 类和 Cursors 类更改鼠标光标。 该示例创建一个包含 ComboBox 控件、 Panel 控件和 控件的 ListView 窗体。 包含 ComboBox 类提供 Cursors 的所有游标。 当用户在 中选择 ComboBox鼠标光标时, Control.Cursor 属性设置为所选游标,这会更新 的 Panel游标。 每次发生事件时都会ListViewControl.CursorChanged更新 。
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
namespace MCursor
{
public ref class Form1: public System::Windows::Forms::Form
{
private:
System::Windows::Forms::ComboBox^ cursorSelectionComboBox;
System::Windows::Forms::Panel^ testPanel;
System::Windows::Forms::Label ^ label1;
System::Windows::Forms::Label ^ label2;
System::Windows::Forms::ListView^ cursorEventViewer;
System::Windows::Forms::Label ^ label3;
public:
Form1()
{
this->cursorSelectionComboBox = gcnew System::Windows::Forms::ComboBox;
this->testPanel = gcnew System::Windows::Forms::Panel;
this->label1 = gcnew System::Windows::Forms::Label;
this->label2 = gcnew System::Windows::Forms::Label;
this->cursorEventViewer = gcnew System::Windows::Forms::ListView;
this->label3 = gcnew System::Windows::Forms::Label;
// Select Cursor Label
this->label2->Location = System::Drawing::Point( 24, 16 );
this->label2->Size = System::Drawing::Size( 80, 16 );
this->label2->Text = "Select cursor:";
// Cursor Testing Panel Label
this->label1->Location = System::Drawing::Point( 24, 80 );
this->label1->Size = System::Drawing::Size( 144, 23 );
this->label1->Text = "Cursor testing panel:";
// Cursor Changed Events Label
this->label3->Location = System::Drawing::Point( 184, 16 );
this->label3->Size = System::Drawing::Size( 128, 16 );
this->label3->Text = "Cursor changed events:";
// Cursor Selection ComboBox
this->cursorSelectionComboBox->Location = System::Drawing::Point( 24, 40 );
this->cursorSelectionComboBox->Size = System::Drawing::Size( 152, 21 );
this->cursorSelectionComboBox->TabIndex = 0;
this->cursorSelectionComboBox->SelectedIndexChanged += gcnew System::EventHandler( this, &Form1::cursorSelectionComboBox_SelectedIndexChanged );
// Cursor Test Panel
this->testPanel->BackColor = System::Drawing::SystemColors::ControlDark;
this->testPanel->Location = System::Drawing::Point( 24, 104 );
this->testPanel->Size = System::Drawing::Size( 152, 160 );
this->testPanel->CursorChanged += gcnew System::EventHandler( this, &Form1::testPanel_CursorChanged );
// Cursor Event ListView
this->cursorEventViewer->Location = System::Drawing::Point( 184, 40 );
this->cursorEventViewer->Size = System::Drawing::Size( 256, 224 );
this->cursorEventViewer->TabIndex = 4;
this->cursorEventViewer->View = System::Windows::Forms::View::List;
// Set up how the form should be displayed and add the controls to the form.
this->ClientSize = System::Drawing::Size( 456, 286 );
array<System::Windows::Forms::Control^>^temp0 = {this->label3,this->cursorEventViewer,this->label2,this->label1,this->testPanel,this->cursorSelectionComboBox};
this->Controls->AddRange( temp0 );
this->Text = "Cursors Example";
// Add all the cursor types to the combobox.
System::Collections::IEnumerator^ myEnum = CursorList()->GetEnumerator();
while ( myEnum->MoveNext() )
{
System::Windows::Forms::Cursor^ cursor = safe_cast<System::Windows::Forms::Cursor^>(myEnum->Current);
cursorSelectionComboBox->Items->Add( cursor );
}
}
private:
array<System::Windows::Forms::Cursor^>^ CursorList()
{
// Make an array of all the types of cursors in Windows Forms.
array<System::Windows::Forms::Cursor^>^temp1 = {Cursors::AppStarting,Cursors::Arrow,Cursors::Cross,Cursors::Default,Cursors::Hand,Cursors::Help,Cursors::HSplit,Cursors::IBeam,Cursors::No,Cursors::NoMove2D,Cursors::NoMoveHoriz,Cursors::NoMoveVert,Cursors::PanEast,Cursors::PanNE,Cursors::PanNorth,Cursors::PanNW,Cursors::PanSE,Cursors::PanSouth,Cursors::PanSW,Cursors::PanWest,Cursors::SizeAll,Cursors::SizeNESW,Cursors::SizeNS,Cursors::SizeNWSE,Cursors::SizeWE,Cursors::UpArrow,Cursors::VSplit,Cursors::WaitCursor};
return temp1;
}
void cursorSelectionComboBox_SelectedIndexChanged( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Set the cursor in the test panel to be the selected cursor style.
testPanel->Cursor = dynamic_cast<System::Windows::Forms::Cursor^>(cursorSelectionComboBox->SelectedItem);
}
void testPanel_CursorChanged( Object^ sender, System::EventArgs^ /*e*/ )
{
// Build up a String* containing the type of Object* sending the event, and the event.
String^ cursorEvent = String::Format( "[{0}]: {1}", sender->GetType(), "Cursor changed" );
// Record this event in the list view.
this->cursorEventViewer->Items->Add( cursorEvent );
}
};
}
[STAThread]
int main()
{
Application::Run( gcnew MCursor::Form1 );
}
using System;
using System.Drawing;
using System.Windows.Forms;
namespace MCursor
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ComboBox cursorSelectionComboBox;
private System.Windows.Forms.Panel testPanel;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ListView cursorEventViewer;
private System.Windows.Forms.Label label3;
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
this.cursorSelectionComboBox = new System.Windows.Forms.ComboBox();
this.testPanel = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.cursorEventViewer = new System.Windows.Forms.ListView();
this.label3 = new System.Windows.Forms.Label();
// Select Cursor Label
this.label2.Location = new System.Drawing.Point(24, 16);
this.label2.Size = new System.Drawing.Size(80, 16);
this.label2.Text = "Select cursor:";
// Cursor Testing Panel Label
this.label1.Location = new System.Drawing.Point(24, 80);
this.label1.Size = new System.Drawing.Size(144, 23);
this.label1.Text = "Cursor testing panel:";
// Cursor Changed Events Label
this.label3.Location = new System.Drawing.Point(184, 16);
this.label3.Size = new System.Drawing.Size(128, 16);
this.label3.Text = "Cursor changed events:";
// Cursor Selection ComboBox
this.cursorSelectionComboBox.Location = new System.Drawing.Point(24, 40);
this.cursorSelectionComboBox.Size = new System.Drawing.Size(152, 21);
this.cursorSelectionComboBox.TabIndex = 0;
this.cursorSelectionComboBox.SelectedIndexChanged +=
new System.EventHandler(this.cursorSelectionComboBox_SelectedIndexChanged);
// Cursor Test Panel
this.testPanel.BackColor = System.Drawing.SystemColors.ControlDark;
this.testPanel.Location = new System.Drawing.Point(24, 104);
this.testPanel.Size = new System.Drawing.Size(152, 160);
this.testPanel.CursorChanged += new System.EventHandler(this.testPanel_CursorChanged);
// Cursor Event ListView
this.cursorEventViewer.Location = new System.Drawing.Point(184, 40);
this.cursorEventViewer.Size = new System.Drawing.Size(256, 224);
this.cursorEventViewer.TabIndex = 4;
this.cursorEventViewer.View = System.Windows.Forms.View.List;
// Set up how the form should be displayed and add the controls to the form.
this.ClientSize = new System.Drawing.Size(456, 286);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.label3, this.cursorEventViewer,
this.label2, this.label1,
this.testPanel, this.cursorSelectionComboBox});
this.Text = "Cursors Example";
// Add all the cursor types to the combobox.
foreach (Cursor cursor in CursorList())
{
cursorSelectionComboBox.Items.Add(cursor);
}
}
private Cursor [] CursorList()
{
// Make an array of all the types of cursors in Windows Forms.
return new Cursor [] {
Cursors.AppStarting, Cursors.Arrow, Cursors.Cross,
Cursors.Default, Cursors.Hand, Cursors.Help,
Cursors.HSplit, Cursors.IBeam, Cursors.No,
Cursors.NoMove2D, Cursors.NoMoveHoriz, Cursors.NoMoveVert,
Cursors.PanEast, Cursors.PanNE, Cursors.PanNorth,
Cursors.PanNW, Cursors.PanSE, Cursors.PanSouth,
Cursors.PanSW, Cursors.PanWest, Cursors.SizeAll,
Cursors.SizeNESW, Cursors.SizeNS, Cursors.SizeNWSE,
Cursors.SizeWE, Cursors.UpArrow, Cursors.VSplit, Cursors.WaitCursor};
}
private void cursorSelectionComboBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
// Set the cursor in the test panel to be the selected cursor style.
testPanel.Cursor = (Cursor)cursorSelectionComboBox.SelectedItem;
}
private void testPanel_CursorChanged(object sender, System.EventArgs e)
{
// Build up a string containing the type of object sending the event, and the event.
string cursorEvent = string.Format("[{0}]: {1}", sender.GetType().ToString(), "Cursor changed");
// Record this event in the list view.
this.cursorEventViewer.Items.Add(cursorEvent);
}
}
}
Imports System.Drawing
Imports System.Windows.Forms
Namespace MCursor
' Summary description for Form1.
Public NotInheritable Class Form1
Inherits System.Windows.Forms.Form
Friend WithEvents cursorSelectionComboBox As System.Windows.Forms.ComboBox
Friend WithEvents testPanel As System.Windows.Forms.Panel
Private label1 As System.Windows.Forms.Label
Private label2 As System.Windows.Forms.Label
Private cursorEventViewer As System.Windows.Forms.ListView
Private label3 As System.Windows.Forms.Label
<System.STAThread()> _
Public Shared Sub Main()
System.Windows.Forms.Application.Run(New Form1)
End Sub
Public Sub New()
Me.cursorSelectionComboBox = New System.Windows.Forms.ComboBox
Me.testPanel = New System.Windows.Forms.Panel
Me.label1 = New System.Windows.Forms.Label
Me.label2 = New System.Windows.Forms.Label
Me.cursorEventViewer = New System.Windows.Forms.ListView
Me.label3 = New System.Windows.Forms.Label
' Select Cursor Label
Me.label2.Location = New System.Drawing.Point(24, 16)
Me.label2.Size = New System.Drawing.Size(80, 16)
Me.label2.Text = "Select cursor:" '
' Cursor Testing Panel Label
Me.label1.Location = New System.Drawing.Point(24, 80)
Me.label1.Size = New System.Drawing.Size(144, 23)
Me.label1.Text = "Cursor testing panel:"
' Cursor Changed Events Label
Me.label3.Location = New System.Drawing.Point(184, 16)
Me.label3.Size = New System.Drawing.Size(128, 16)
Me.label3.Text = "Cursor changed events:"
' Cursor Selection ComboBox
Me.cursorSelectionComboBox.Location = New System.Drawing.Point(24, 40)
Me.cursorSelectionComboBox.Size = New System.Drawing.Size(152, 21)
Me.cursorSelectionComboBox.TabIndex = 0
' Cursor Test Panel
Me.testPanel.BackColor = System.Drawing.SystemColors.ControlDark
Me.testPanel.Location = New System.Drawing.Point(24, 104)
Me.testPanel.Size = New System.Drawing.Size(152, 160)
' Cursor Event ListView
Me.cursorEventViewer.Location = New System.Drawing.Point(184, 40)
Me.cursorEventViewer.Size = New System.Drawing.Size(256, 224)
Me.cursorEventViewer.TabIndex = 4
Me.cursorEventViewer.View = System.Windows.Forms.View.List
' Set up how the form should be displayed and add the controls to the form.
Me.ClientSize = New System.Drawing.Size(456, 286)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.label3, _
Me.cursorEventViewer, Me.label2, Me.label1, _
Me.testPanel, Me.cursorSelectionComboBox})
Me.Text = "Cursors Example"
' Add all the cursor types to the combobox.
Dim cursor As Cursor
For Each cursor In CursorList()
cursorSelectionComboBox.Items.Add(cursor)
Next cursor
End Sub
Private Function CursorList() As Cursor()
' Make an array of all the types of cursors in Windows Forms.
return New Cursor() {Cursors.AppStarting, Cursors.Arrow, Cursors.Cross, _
Cursors.Default, Cursors.Hand, Cursors.Help, _
Cursors.HSplit, Cursors.IBeam, Cursors.No, _
Cursors.NoMove2D, Cursors.NoMoveHoriz, Cursors.NoMoveVert, _
Cursors.PanEast, Cursors.PanNE, Cursors.PanNorth, _
Cursors.PanNW, Cursors.PanSE, Cursors.PanSouth, _
Cursors.PanSW, Cursors.PanWest, Cursors.SizeAll, _
Cursors.SizeNESW, Cursors.SizeNS, Cursors.SizeNWSE, _
Cursors.SizeWE, Cursors.UpArrow, Cursors.VSplit, Cursors.WaitCursor}
End Function
Private Sub cursorSelectionComboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cursorSelectionComboBox.SelectedIndexChanged
' Set the cursor in the test panel to be the selected cursor style.
testPanel.Cursor = CType(cursorSelectionComboBox.SelectedItem, Cursor)
End Sub
Private Sub testPanel_CursorChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles testPanel.CursorChanged
' Build up a string containing the type of object sending the event, and the event.
Dim cursorEvent As String = String.Format("[{0}]: {1}", sender.GetType().ToString(), "Cursor changed")
' Records this event in the list view.
Me.cursorEventViewer.Items.Add(cursorEvent)
End Sub
End Class
End Namespace 'MCursor
以下示例在窗体上以正常大小绘制指定的光标,在拉伸模式下绘制指定光标的大小是其大小的两倍。 此示例假定在调用 方法时,有 Form 一个 和 一个 Cursor 要传入该方法的 对象。
void DrawCursorsOnForm( System::Windows::Forms::Cursor^ cursor )
{
// If the form's cursor is not the Hand cursor and the
// Current cursor is the Default, Draw the specified
// cursor on the form in normal size and twice normal size.
if ( this->Cursor != Cursors::Hand && System::Windows::Forms::Cursor::Current == Cursors::Default )
{
// Draw the cursor stretched.
Graphics^ graphics = this->CreateGraphics();
Rectangle rectangle = Rectangle(Point(10,10),System::Drawing::Size( cursor->Size.Width * 2, cursor->Size.Height * 2 ));
cursor->DrawStretched( graphics, rectangle );
// Draw the cursor in normal size.
rectangle.Location = Point(rectangle.Width + rectangle.Location.X,rectangle.Height + rectangle.Location.Y);
rectangle.Size = cursor->Size;
cursor->Draw( graphics, rectangle );
// Dispose of the cursor.
delete cursor;
}
}
private void DrawCursorsOnForm(Cursor cursor)
{
// If the form's cursor is not the Hand cursor and the
// Current cursor is the Default, Draw the specified
// cursor on the form in normal size and twice normal size.
if(this.Cursor != Cursors.Hand &
Cursor.Current == Cursors.Default)
{
// Draw the cursor stretched.
Graphics graphics = this.CreateGraphics();
Rectangle rectangle = new Rectangle(
new Point(10,10), new Size(cursor.Size.Width * 2,
cursor.Size.Height * 2));
cursor.DrawStretched(graphics, rectangle);
// Draw the cursor in normal size.
rectangle.Location = new Point(
rectangle.Width + rectangle.Location.X,
rectangle.Height + rectangle.Location.Y);
rectangle.Size = cursor.Size;
cursor.Draw(graphics, rectangle);
// Dispose of the cursor.
cursor.Dispose();
}
}
Private Sub DrawCursorsOnForm(cursor As Cursor)
' If the form's cursor is not the Hand cursor and the
' Current cursor is the Default, Draw the specified
' cursor on the form in normal size and twice normal size.
If (Not Me.Cursor.Equals(Cursors.Hand)) And _
Cursor.Current.Equals(Cursors.Default) Then
' Draw the cursor stretched.
Dim graphics As Graphics = Me.CreateGraphics()
Dim rectangle As New Rectangle(New Point(10, 10), _
New Size(cursor.Size.Width * 2, cursor.Size.Height * 2))
cursor.DrawStretched(graphics, rectangle)
' Draw the cursor in normal size.
rectangle.Location = New Point(rectangle.Width + _
rectangle.Location.X, rectangle.Height + rectangle.Location.Y)
rectangle.Size = cursor.Size
cursor.Draw(graphics, rectangle)
' Dispose of the cursor.
cursor.Dispose()
End If
End Sub
注解
此类中的 Cursor 某些对象可能采用与所述不同的外观。 用户可以通过调整其操作系统中的鼠标指针设置来更改光标外观。 平移游标和无移动游标是静态的,无法由操作系统更改。
鼠标滚轮操作期间使用平移和无移动光标。 根据窗口的滚动方向,单击鼠标滚轮时,光标将更改为相应的无移动光标。 然后,鼠标移动时,光标将变为相应的平移光标。
属性
AppStarting |
获取在应用程序启动时显示的光标。 |
Arrow |
获取箭头光标。 |
Cross |
获取十字线光标。 |
Default |
获取默认光标,它通常为箭头光标。 |
Hand |
获取手形光标,当悬停在 Web 链接上时通常使用该光标。 |
Help |
获取“帮助”光标,它是箭头和问号的组合。 |
HSplit |
获取当鼠标定位在水平拆分条上时显示的光标。 |
IBeam |
获取 I 型光标,该光标用于显示单击鼠标时文本光标出现的位置。 |
No |
获取指示某个特定区域对当前操作无效的光标。 |
NoMove2D |
获取滚轮操作过程中鼠标不动但是该窗口可以同时在水平和垂直方向上滚动时显示的光标。 |
NoMoveHoriz |
获取滚轮操作过程中鼠标不动但是该窗口可以在水平方向上滚动时显示的光标。 |
NoMoveVert |
获取滚轮操作过程中鼠标不动但是该窗口可以在垂直方向上滚动时显示的光标。 |
PanEast |
获取滚轮操作过程中鼠标移动并且该窗口水平向右滚动时显示的光标。 |
PanNE |
获取滚轮操作过程中鼠标移动并且该窗口水平、垂直向上和向右滚动时显示的光标。 |
PanNorth |
获取滚轮操作过程中鼠标移动并且该窗口垂直向上滚动时显示的光标。 |
PanNW |
获取滚轮操作过程中鼠标移动并且该窗口水平、垂直向上和向左滚动时显示的光标。 |
PanSE |
获取滚轮操作过程中鼠标移动并且该窗口水平、垂直向下和向右滚动时显示的光标。 |
PanSouth |
获取滚轮操作过程中鼠标移动并且该窗口垂直向下滚动时显示的光标。 |
PanSW |
获取滚轮操作过程中鼠标移动并且该窗口水平、垂直向下和向左滚动时显示的光标。 |
PanWest |
获取滚轮操作过程中鼠标移动并且该窗口水平向左滚动时显示的光标。 |
SizeAll |
获取四向大小调整光标,该光标由相联接的、分别指向东南西北的四个箭头组成。 |
SizeNESW |
获取双向对角线(东北/西南)大小调整光标。 |
SizeNS |
获取双向垂直(北/南)大小调整光标。 |
SizeNWSE |
获取双向对角线(西北/东南)大小调整光标。 |
SizeWE |
获取双向水平(西/东)大小调整光标。 |
UpArrow |
获取上箭头光标,该光标通常用来标识插入点。 |
VSplit |
获取当鼠标定位在垂直拆分条上时显示的光标。 |
WaitCursor |
获取等待光标,通常是沙漏形状。 |