Winform窗口里的嵌入WPF的UserControl,关闭Winform父窗体的方法
2013-05-20 17:58
330 查看
可以在form_load事件里把this传给UserControl,然后在usercontrol里调用form的各种方法,不过这种做法不太好,耦合性较高。标准做法是用事件传递
UserControl里加如下代码:
在Form里添加如下代码:
form_load事件里:
然后用这个方法不好使,还是出现我之前的鬼影问题
改成用这个方法, 把elementHost1这个对象给销毁掉,这样似乎就好了, 鬼影的问题是在用了第三方的WpfToolkit之中的DataGrid后出现的,如果用.NET4.0里面的DataGrid就没有问题。 虽然麻烦点,但是也算是个收获。
UserControl里加如下代码:
public delegate void FormCloseEventHandler(object sender, EventArgs e); |
public event FormCloseEventHandler FormClose; |
private void button_quit_Click(object sender, EventArgs e) |
{ |
if (this.FormClose != null) |
{ |
FormClose(this, new EventArgs()); |
} |
} |
form_load事件里:
this.userControl.FormClose += new UserControl.FormCloseEventHandler(this.userControl_FormClose); //不明白为什么是用类方法而非对象方法? |
private void userControl_FormClose(object sender, EventArgs e) |
{ |
this.Close(); |
} |
private void UserControl_FormClose(object sender, EventArgs e){ this.elementHost1.Dispose(); this.Close();}
相关文章推荐
- Winform窗口里的嵌入WPF的UserControl,关闭Winform父窗体的方法
- C# WinForm和WPF关闭所有子窗口的方法
- 弹出dialog 窗口; 以及在dialog 中关闭并且刷新父窗体的方法
- WinForm程序或WPF程序只能打开一个子窗体 解决窗口关闭不能再打开的BUG
- C# Winform中实现主窗口打开登录窗口关闭的方法
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体
- C# winForm 窗口跳转 后关闭上一个窗口的方法
- WinForm窗口关闭的几种常用方法
- C# Winform中实现主窗口打开登录窗口关闭的方法
- 在wpf或winform关闭子窗口或对子窗口进行某个操作后刷新父窗口
- WPF关闭应用程序,释放Window窗口资源方法
- C# Winform中实现主窗口打开登录窗口关闭的方法
- WPF关闭应用程序,释放Window窗口资源方法
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体
- WPF/WinForm在线程中调用提示窗MessageBox阻塞窗口方法
- C# winform登录窗口关闭方法
- 关于winForm窗体禁用关闭按钮的使用方法及禁用最大化、最小化窗口
- C# Winform中实现主窗口打开登录窗口关闭的方法
- 关于 WPF 在主窗口中用多线程打开的子窗口关闭后进程还存在,这个问的题的解决方法。
- C# winform登录窗口关闭方法