我正在用C#WPF .NET3.5開發UI程序。在我的主窗口中,我有一個按鈕。當用戶點擊這個按鈕時,它會創建一個無模式的對話框。將焦點改回主窗口並再次點擊該按鈕會創建另一個無模式對話框。對話框的序列如下:從一個父對話框創建多個無模式對話框
米 - > C1 - > C2 - > C3
其中M是主窗口中,C1,C2和C3都在順序子窗口。 C1是非模態的(使用Owner屬性未設置的Window.Show()方法創建),C2和C3是模態的(使用擁有Owner屬性集的Window.ShowDialog()方法創建)。我期望的是,用戶應該能夠從M創建多個C1,C2和C3對話框。
我的問題如下。如果我創建2個C1對話框,一切正常。我可以在M和兩個C1對話框中執行所有UI操作。但是,一旦從一個C1對話框創建C2和C3對話框,我就不能在另一個C1對話框和M對話框中執行任何UI操作。然而,我可以在C3對話框中執行UI操作。
C2對話框包含使用DispatcherTimer更新的進度條。完成操作後,從DispatcherTimer的事件處理程序啓動C3對話框。
我提前感謝您的寶貴支持。
查看Windows.ShowDialog()的定義「打開一個窗口並僅在新打開的窗口關閉時返回」。 – Paparazzi
是的。 ShowDialog()阻止調用函數。這會阻止C1的事件處理程序。但它不會阻止M.的任何事件處理程序。但我無法在M中執行任何UI操作。無論如何,這可能是默認行爲。 Jon下面的答案給出了導致問題的原因的解釋。感謝您的評論。 – geekowl
但根據你的問題,它阻止了M.它說「阻止呼叫」在哪裏?它說「僅返回」。 – Paparazzi