2010-05-21 80 views
1

我有一個奇怪的問題,我希望有人可能有經驗/有一些建議。Windows保留拖放光標

我正在使用第三方庫(GoDiagram),它簡單地反映了它,我不認爲是問題的原因。會發生什麼是我將文件拖到從Control類繼承的背景畫布上。在畫布上拖動文件時,光標將變爲「拖放」光標,我相當肯定的是由基本控件而不是畫布本身處理。

在這一點上,畫布觸發了一個我迷上的事件。此事件顯示模式對話框。此時光標是一個正常的箭頭。但是,如果我將焦點返回到桌面,則我的光標仍處於「拖放」狀態,實際上我無法與桌面上的任何圖標進行交互。

有誰知道爲什麼這樣的事情會發生?還是有人知道我可以如何強制光標恢復?奇怪的是,它感覺就像它的Windows遊標無法正常工作,並且從這一點開始,我的應用程序中的光標沒問題。如果我關閉了對話框,那麼光標就會返回到正常光標,無論我在哪裏,就像你期望的那樣。

乾杯

+0

對於任何人遇到同樣的問題,看看[這個答案](http://stackoverflow.com/a/21407496/1576119)。我想這是一回事。 ShowDialog將阻止DragDrop完成。 – 2016-05-20 18:56:40

回答

0

通常,當你改變光標類型,你先救以前遊標狀態;更改爲新的遊標類型,執行該工作,然後在完成之後將遊標更改回以前的遊標類型。所以每個人(每個應用程序)都有機會在尊重其他應用程序的同時操作遊標類型。

看起來,在某種程度上,當新的模式對話框打開時,它不會保留先前的遊標狀態,更不用說在對話關閉事件時恢復到以前的遊標類型。

那麼,你可以做什麼,是手動,change the cursor type當該對話框關閉。

- 編輯 -

我重讀你的問題;如果我理解正確,我現在還不確定(現在)。

據我所知,你連接起來的事件顯示對話框,這是否意味着你是顯示模態對話框的人?

如果是這樣,你是否試圖操縱.MouseEnter.MouseLeave事件來控制遊標類型。

+0

我不認爲你很遵循KMan。當對話框關閉時,光標正確返回。當對話框打開時(在DragDrop事件接收器內打開),並在對話框仍然打開時單擊桌面時將光標保持在此狀態。 – Ian 2010-05-21 10:22:27

+0

@Ian:看到我的編輯迴應你的評論。 – 2010-05-21 10:51:07