Windows отправляет окно, которое содержит курсор мыши сообщение WM_SETCURSOR, давая ему возможность изменить форму курсора. Управление как TextBox использует в своих интересах это, изменяя курсор в I-панель. Управление. Свойство Cursor определяет, какая форма будет использоваться.
Курсор. Текущее свойство изменяет форму непосредственно, не ожидая ответа WM_SETCURSOR. В большинстве случаев та форма вряд ли будет долгое время выживать. Как только пользователь перемещает мышь, WM_SETCURSOR возвращает ее для Управления. Курсор.
свойство UseWaitCursor было добавлено в.NET 2.0, чтобы облегчить отображать песочные часы. К сожалению, это не работает очень хорошо. Это требует, чтобы сообщение WM_SETCURSOR изменило форму, и этого не произойдет, когда Вы установите свойство на истинный и затем делаете что-то, что требует времени. Попробуйте этот код, например:
private void button1_Click(object sender, EventArgs e) {
this.UseWaitCursor = true;
System.Threading.Thread.Sleep(3000);
this.UseWaitCursor = false;
}
курсор никогда не изменяется. Для битья этого в форму необходимо будет использовать Курсор. Текущий также. Вот немного класса помощника для упрощения:
using System;
using System.Windows.Forms;
public class HourGlass : IDisposable {
public HourGlass() {
Enabled = true;
}
public void Dispose() {
Enabled = false;
}
public static bool Enabled {
get { return Application.UseWaitCursor; }
set {
if (value == Application.UseWaitCursor) return;
Application.UseWaitCursor = value;
Form f = Form.ActiveForm;
if (f != null && f.Handle != IntPtr.Zero) // Send WM_SETCURSOR
SendMessage(f.Handle, 0x20, f.Handle, (IntPtr)1);
}
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
}
И использование это как это:
private void button1_Click(object sender, EventArgs e) {
using (new HourGlass()) {
System.Threading.Thread.Sleep(3000);
}
}
this.Cursor
курсор, который будет использоваться, когда мышь будет по окну, упомянутому this
. Cursor.Current
текущий курсор мыши, который мог бы отличаться от this.Cursor
, если мышь по различному окну.
Я верю тому Курсору. Текущий, в настоящее время курсор мыши используясь (независимо от того, где это находится на экране), в то время как это. Курсор является курсором, на который он будет установлен, когда мышь передаст по Вашему окну.