我发现网上很多的的传递参数的方法都极其的麻烦,什么事件,重写,注册,继承,根本用不了这么麻烦。
对于使用window.ShowDialog()方法的
对于使用window.ShowDialog();来弹出窗口的,该方法是有bool返回值的,可以通过这一点来获得子窗口的参数。
//在子窗口通过如下方式设置返回值
this.DialogResult = true;
//在主窗口通过如下方式获得子窗口的返回值
bool? result= window.ShowDialog();
//bool?类型的数值可以是ture,false,null三种。
不过上面这种方法只能传递bool参数,至于其它复杂参数,可以直接放到子窗口类里面,然后在主窗口直接获取。
这里是获取子窗口中的自定义参数obj,将obj直接放到子窗口的class中,设置权限public,就可以在主窗口直接获取到相应的参数。
Window window = new Window();
window.ShowDialog();
//直接获取子窗口中的数据
object obj = window.obj;
对于使用window.Show()方法的
这个就比较麻烦了,需要使用委托来传递参数,其代码如下:
这是主窗口的代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
//当页面加载完成后执行
private void Window_Loaded(object sender, RoutedEventArgs e)
{
bool isFrist = bool.Parse(ConfigurationManager.AppSettings["isFirst"]);
Confirm confirm = new Confirm(resultOfConfirm);
confirm.ShowDialog();
}
//弹窗传递的消息
bool confirmResult;
private void resultOfConfirm(bool result)
{
this.confirmResult = result;
}
弹窗中的代码:
public partial class Confirm : Window
{
public Confirm(resultOfConfirm result)
{
InitializeComponent();
this.result = result;
}
public delegate void resultOfConfirm(bool result);
private resultOfConfirm result;
private void Yes_Click(object sender, RoutedEventArgs e)
{
result(true);
this.Close();
}
private void No_Click(object sender, RoutedEventArgs e)
{
result(false);
this.Close();
}
}
版权声明:本文为weixin_44927769原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。