前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Winform窗口里的嵌入WPF的UserControl,关闭Winform父窗体的方法

Winform窗口里的嵌入WPF的UserControl,关闭Winform父窗体的方法

作者头像
hbbliyong
发布2018-03-05 15:23:11
2.7K0
发布2018-03-05 15:23:11
举报
文章被收录于专栏:hbbliyonghbbliyong

可以在form_load事件里把this传给UserControl,然后在usercontrol里调用form的各种方法,不过这种做法不太好,耦合性较高。标准做法是用事件传递

UserControl里加如下代码:

代码语言:javascript
复制
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里添加如下代码:

form_load事件里:

this.userControl.FormClose += new UserControl.FormCloseEventHandler(this.userControl_FormClose); //不明白为什么是用类方法而非对象方法?

然后用这个方法不好使,还是出现我之前的鬼影问题

代码语言:javascript
复制
        private void userControl_FormClose(object sender, EventArgs e)
{
this.Close();
}

改成用这个方法, 把elementHost1这个对象给销毁掉,这样似乎就好了, 鬼影的问题是在用了第三方的WpfToolkit之中的DataGrid后出现的,如果用.NET4.0里面的DataGrid就没有问题。 虽然麻烦点,但是也算是个收获。

代码语言:javascript
复制
  private void UserControl_FormClose(object sender, EventArgs e)        
  {
              this.elementHost1.Dispose(
              );            
              this.Close();        }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-05-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档