WPF 弹出对话框

例子1:
假设有这样两个窗体:RootWindow,SubWindow,在RootWindow中引发某事件而显示SubWindow(为工程目录下 项目—添加窗口,名字为subwindow)
1,如果弹出窗体(比如SubWindow)仅仅是调用Show方法,并且没有设置其Owner属性:
ClassRootWindow
{
void Foo()
{
SubWindow sw = newSubWindow();
sw.Show();
}
}
那么弹出窗体(SubWindow)和源窗体(如RootWindow)没有任何层级关系,也就是说不会以模态方式呈现(SubWindow不会阻挡用户对RootWindow的操作)。SubWindow在Show出来时在RootWindow的上方,但用户可以通过鼠标点击等方式将 RootWindow带到SubWindow前方来而遮盖RootWindow的内容,也就是说,享有用户焦点的窗口将被带到最前方。并且 RootWindow和SubWindow的最小化与还原操作互不影响。
2,如果弹出窗体(比如SubWindow)调用Show方法,并且设置了其Owner属性:
ClassRootWindow
{
void Foo()
{
SubWindow sw = newSubWindow();
sw.Owner = this;
sw.Show();
}
}
那么弹出窗体(SubWindow)和源窗体(如RootWindow)将有着父子关系,也就是说,弹出窗体将永远在源窗体的上方,但并不是模式的,用户可以操作源窗体,当源窗体被最小化或还原的时候,弹出窗体也将随着最小化和还原,反之不成立。

3,如果弹出窗体(SubWindow)以ShowDialog的方式显示,并且没有设置其Owner属性:
ClassRootWindow
{
voidFoo()
{
SubWindow sw = new SubWindow();
sw.ShowDialog();
}
}
弹出窗体将以模式的方式出现,但没有父子关系,弹出窗体将阻止用户对源窗体的操作,但点击源窗体时弹出窗体不会出现闪动效果。弹出窗体最小化时,源窗体会随之最小化,但还原操作却不可以(很奇怪)。这里有一个值得注意的问题是:在此模式下,如果弹出窗体不在任务栏显示(ShowInTaskBar==false),而源窗体显示在任务栏,用户的操作可能会导致弹出窗口被隐藏在源窗口背后而没办法切换出来(除非使用 Alt+TAB)。

4,如果弹出窗体(SubWindow)以ShowDialog的方式显示,并且设置了其Owner属性:
Class RootWindow
{
void Foo()
{
SubWindow sw = newSubWindow();
sw.Owner = this;
sw.ShowDialog();

}
弹出窗体将以模式的方式出现,并且有父子关系,弹出窗体将永远处于源窗体上方,弹出窗体将阻止用户对源窗体的操作,并且点击源窗体时弹出窗体会出现闪动效果。弹出窗体最小化或还原时,源窗体会随之最小化或还原

例子2:
主窗口 后台程序:
private void test(object sender, RoutedEventArgs e){
Window1 new_windows = new Window1(); //windows1 为新建的wpf窗口
new_windows.Owner = this;
new_windows.textbox_display.Text = “hello you”;
new_windows.child_form_handler += delegate(String a ,String b) {
调用委托 子窗口的委托,注意委托中的形参
MessageBox.Show(a + b );
};
new_windows.Show();
}
子窗口cs:
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
public delegate void child_form(String a,String b );
public event child_form child_form_handler;//定义委托
private void button1_click(object sender, RoutedEventArgs e)
{
String name_1 = textbox_name.Text.ToString();
String age_1 = textbox_age.Text.ToString();
child_form_handler(name_1,age_1) ;//执行会调函数
}
}
}
子窗口前台界面:
这里写图片描述

WPF 弹出确认框:

//定义消息框
            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;
            }

猜你喜欢

转载自blog.csdn.net/tiger15605353603/article/details/81427548