非模式對話框
需求:彈窗是非模式對話框,即可以多個彈窗彈出,且彈窗后面的窗體可以被操作,不會被鎖定。
自定義的窗體Window實現以下步驟:
- 在C#代碼中彈出窗體時,使用 window.Show() 而不是 window.ShowDialog();
- 最好設置 window.Topmost = true; 可以在XAML頂部寫、也可以在C#代碼中設置。否則該窗體可以被主界面遮擋(比如按Tab切換到主界面時),該彈窗沒有被關閉,但又看不到。
- 如有需要,可以設置 ResizeMode=”NoResize”; 可以在XAML頂部寫、也可以在C#代碼中設置。這樣該彈窗將無法改變寬高,且沒有最大化、最小化按鈕。
對話框、消息彈窗
//定義消息框 string messageBoxText = "需要保存嗎?"; string caption = "HELLO"; MessageBoxButton button = MessageBoxButton.YesNoCancel; MessageBoxImage icon = MessageBoxImage.Warning; //顯示消息框 MessageBoxResult result = MessageBox.Show(messageBoxText, caption, button, icon); //處理消息框信息 switch (result) { case MessageBoxResult.Yes: // ... break; case MessageBoxResult.No: // ... break; case MessageBoxResult.Cancel: // ... break; }
簡化的寫法:
MessageBoxResult result = MessageBox.Show("這里是消息內容", "這是標題", MessageBoxButton.YesNo); if (result == MessageBoxResult.Yes) { // do something } else { // do something }
打開文件對話框
//打開文件對話框 Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); dlg.FileName = "Document"; // Default file name dlg.DefaultExt = ".txt"; // Default file extension dlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension // Show open file dialog box Nullable<bool> result = dlg.ShowDialog(); // Process open file dialog box results if (result == true) { // Open document string filename = dlg.FileName; //... }
