新增一個對話框其實跟新增視窗沒有差別
從視窗的設定來說,強制回應對話框至少要有可以跟使用者互動(對話)的功能,而且除了簡單的通知功能之外(MessageBox),通常會希望使用者能夠表達出他的選擇,所以一般來說,對話框至少需要正反兩個選項。
<Window x:Class="test_wpf.NewDialog"
...>
<Grid>
<!--set an event handler as button clicked-->
<Button Width="100" HorizontalAlignment="Left"
Margin="10,10,0,10" Click="Ok_Click" >
OK
</Button>
<!--a button with IsCancel property is just
like the close button in title bar, so there
is no need to add a click event handler-->
<Button Width="100" HorizontalAlignment="Right"
Margin="0,10,10,10" IsCancel="True" >
Cancel
</Button>
</Grid>
</Window>
注意,這時候因為第二個按鈕設成IsCancel,所以按下它相當於按下視窗預設的關閉鍵,而此時視窗關閉,並將DialogResult設成false(英文版和中文版的msdn寫的不同,但經測試回傳為false),所以不需要額外寫事件處理,而第一個按鈕的事件處理如下
private void Ok_Click(object sender, RoutedEventArgs e)
{
/// set DialogResult and the window will close
/// automatically and no need to call Close()
DialogResult = true;
}
此時因為設定DialogResult,視窗自動關閉,不需要額外呼叫Close()
使用對話框其實就是使用視窗,只是Show出來的方法不同
NewDialog d = new NewDialog();
if ((bool)d.ShowDialog())
{
/// process when DialogResult is true
MessageBox.Show("OK");
}
else
{
/// process when DialogResult is false
MessageBox.Show("Cancel");
}
--
參考資料
對話方塊概觀
不好意思,我照著您的範例來寫
回覆刪除先弄了一個MainWindow出來,再產生您所寫的NewDialog
結果在按下NewDialog的 OK 按鈕的時候,卻連MainWindow一起消失了
後面的 MessageBox.Show 也沒有印出來
這是跟版本的差異有關嗎?我所使用的是visual studio 2010 express
謝謝