2016-01-29 57 views
2

在WinForms應用程序,我將光標移動到WaitCursor,並在finally塊,將其設置回默認值:什麼可能會導致等待光標恢復到默認值之前?

private void buttonGenRpts_Click(object sender, EventArgs args) 
{ 
    try 
    { 
     Cursor = Cursors.WaitCursor; 
     buttonGenRpts.Enabled = false; 
     GenerateReports(); 
     ... // code elided for brevity (and hopefully not levity) 
    } 
    finally 
    { 
     Cursor = Cursors.Default; 
     buttonGenRpts.Enabled = true; 
    } 
} 

在大多數情況下它工作正常,但不是全部 - 光標因某種原因停止沙漏。然而,Cursor沒有被設置(默認或其他任何地方)在代碼中的其他地方 - 只有在上面的代碼。

還有什麼可能導致光標開始詛咒它的無盡的振動,並停止其行駛?

+0

_Cursor.Current = Cursors.WaitCursor_? – Steve

+0

這是首選的方法嗎?如果是這樣,爲什麼它沒有「當前」而工作?我會嘗試一下,看看... –

+0

將它設置爲電流使它幾乎立即死亡。 –

回答

1

要設置當前光標爲整個應用程序,你應該使用

Cursor.Current = Cursors.WaitCursor; 
... 
Cursor.Current = Cursors.Default; 

,而不是你的代碼將當前窗體的Cursor屬性。
您可能會將鼠標移到表單邊界之外,並將其恢復爲默認值。

From MSDN Cursor class

從Control類派生的所有控件都有光標 屬性。當 位於控件的範圍內時,要更改鼠標指針顯示的光標,請將光標指定給控件的光標 屬性。或者,您可以通過將光標指定給當前屬性在 應用程序級別顯示光標

+0

像這樣改變它會使光標幾乎立即恢復爲普通的舊指針。 –

+0

另一種可能性是_Application.UseWaitCursor = true_ then false – Steve

+0

嘗試「UseWaitCursor」甚至不會爲我編譯;我得到,'''System.Windows.Forms.Cursor'沒有包含'UseWaitCursor'的定義...「 –

相關問題