İmleç.Bu vs mevcut.İmleç
Cursor.Current
this.Cursor
arasında fark this
WinForm olduğu) var .Net? Ben hep kullanılan this.Cursor
ve çok iyi şanslar ama ben son zamanlarda başladım kullanarak CodeRush ve sadece gömülü bir koddaki "Bekleme İmleç" blok ve CodeRush kullanılan Cursor.Current
özelliği. Diğer programcılar Cursor.Current
özelliği ile bazı sorunlar var İnternet ve gördüm. Sadece eğer iki farkı var mı diye soracaktım" Şimdiden teşekkürler.
Küçük bir test yaptım. İki win var. Ben form1, Cursors.WaitCursor
Cursor.Current
özelliğini ayarlayın ve sonra form2 Göster düğmesini tıklayın. İmleç form üzerine değiştirmez. Cursors.Default
(işaretçi) imleç kalır.
Form1 düğmesini tıklatarak olayı Cursors.WaitCursor
12 *ve form2, bekle imleci göster form1 yalnızca gösterir ve varsayılan imleç beklenen form2. Yani, ben hala Cursor.Current
ne yaptığını bilmiyoruz.
CEVAP
Windows WM_SETCURSOR ileti imleç fare içeren pencere, imlecin şeklini değiştirmek için bir fırsat vererek gönderir. TextBox gibi bir kontrol avantajı, bir bar içine imleci değiştirme alır. Denetim.İmleç özelliği şekil kullanılacağını belirler.
İmleç.Geçerli özellik değişiklikleri şeklinde doğrudan, WM_SETCURSOR bir karşılık beklemeden. Çoğu durumda, bu şekli uzun süre hayatta kalmak için olası değildir. Kullanıcı hareketleri en kısa sürede fare, WM_SETCURSOR Kontrol etmek için geri değiştirir.İmleç.
UseWaitCursor özelliği eklendi .Daha kolay bir kum saati görüntülemek için yapmak için NET 2.0. Ne yazık ki, pek de işe yaramıyor. WM_SETCURSOR ileti bir süre alır true özelliğini ayarlayın ve bir şeyler yap o zaman, böyle bir şey olmayacak şekil ve değiştirmek gerekir. Örneğin: bu kodu deneyin
private void button1_Click(object sender, EventArgs e) {
this.UseWaitCursor = true;
System.Threading.Thread.Sleep(3000);
this.UseWaitCursor = false;
}
İmleci asla değişmez. Şeklinde vurmak için, İmleç kullanmanız gerekir.De geçerli. İşte bunu kolaylaştırmak için küçük bir Yardımcı Sınıf:
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);
}
Ve aşağıdaki gibi kullanabilirsiniz:
private void button1_Click(object sender, EventArgs e) {
using (new HourGlass()) {
System.Threading.Thread.Sleep(3000);
}
}
Nasıl Eclipse son imleç konumuna gitme...
&Quot;tarayıcı imleç bekle" ben &...
Nasıl imleç bekleme imleci devre yapab...
Kısayol Çalıştırmak için imleç anahtar...
Devre dışı EditText yanıp sönen imleç...