我是一位相當有經驗的WinForms開發人員。我有一個曾經運行良好的MdiApplication。但是,最近我們使用ComponentOne RibbonForm的應用程序的主要外殼已經得到了很大的更新。此更新確實影響了我們的其他第三方組件,我們建立的組件是由於ComponentOne在其事件代碼中使用DoEvents()
。我想我已經清理了所有的代碼引起的問題,但我現在已經找到了另一個......WinForms MdiChildren選擇和激活
當我有多個MdiChildren
開放,並通過
document.Activate();
document.EditorControl.Select();
document.EditorControl.Focus();
另一個打開MdiChildren
文件仍然有焦點,它的形式突出顯示,輸入沒有設置在我在代碼中設置的文檔上。兩個問題:
我怎樣才能確保
Form
我要激活是只一個是活躍的?鏈接到上面;使用
form.Activate()
將一個窗體設置爲活動狀態應該禁用其他窗口MdiChildren
,但它不是 - 如何禁用代碼中的其他窗口?
謝謝你的時間。
你的第一個問題讓我感到困惑......在什麼情況下有多於一個活躍的孩子? MDI的行爲就是做你想要的東西,所以任何其他的行爲似乎都是人爲的。 – DonBoitnott
我可以打開多個excel工作簿,因此我可以在任何時候都有許多mdi兒童活動。用戶可以通過一個按鈕(如水平對齊或任何其他)按照自己的意願進行操作。我放置了這些項目,我想在佈局操作後恢復活動窗口。現在,出於某種原因,當我這樣做時,我得到了兩個活動窗口,最後一個是我編程移動的,另一個是我在操作之後設置的窗口。 'form.Active()'應該將'form'設置爲活動狀態,並且默認行爲,其他應該停用,這不會發生。爲什麼? – MoonKnight
我現在遇到了'C1Ribbon'和一個MDI表單的問題,我懷疑這是由於他們使用'DoEvents()'。你能否擴展你發現導致你麻煩的事情? – DonBoitnott