有時我的消息框顯示爲,在下是應用程序的主窗口。因此,消息框不可見,主窗口看起來像是被掛起,並且不會響應任何輸入。通過使用alt-tab切換到另一個應用程序並返回,可以「解凍」主窗口,並最終在主窗口上方的正確位置顯示消息框。但這對用戶來說並不明顯。主窗口下的消息框
任何想法,如何避免這個問題?
UPD主窗口是本地的;我已經嘗試使用MessageBox,但沒有指定父窗口,但在兩種情況下都有相同的問題
有時我的消息框顯示爲,在下是應用程序的主窗口。因此,消息框不可見,主窗口看起來像是被掛起,並且不會響應任何輸入。通過使用alt-tab切換到另一個應用程序並返回,可以「解凍」主窗口,並最終在主窗口上方的正確位置顯示消息框。但這對用戶來說並不明顯。主窗口下的消息框
任何想法,如何避免這個問題?
UPD主窗口是本地的;我已經嘗試使用MessageBox,但沒有指定父窗口,但在兩種情況下都有相同的問題
我不知道是什麼原因,但我使用自己的包裝用於固定這個問題的原生父窗口:
public class Win32Window : IWin32Window
{
public Win32Window(IntPtr val)
{
_handle = val;
}
readonly IntPtr _handle;
public IntPtr Handle
{
get { return _handle; }
}
}
通常,當您調用消息框函數時,它們會將「父」窗口作爲參數。您作爲「父」窗口傳遞了哪個窗口?
在主機應用程序中請求句柄並使用Control.FromHandle()來包裝 – user626528 2011-06-07 15:31:11
@user:那麼機會就是,主機應用程序傳遞NULL('IntPtr.Zero'),導致消息框與桌面窗口一起顯示爲其父母。這將把它放在你的應用程序的窗口下面。顯示其他代碼以獲得更好的幫助。 – 2011-06-07 15:35:49
@Cody Gray,它不是零。如果桌面窗口是父窗口,它不會凍結我的應用程序的主窗口。 – user626528 2011-06-07 16:05:19
可能是你叫的消息框在第二個線程不是主線程
你可以請張貼一些代碼嗎? – 2011-06-07 17:05:26