首页 > 代码库 > 【帅刺猬课堂】Winform中使用WPF的UserControl
【帅刺猬课堂】Winform中使用WPF的UserControl
今天准备做一个登录界面的时候,想用WPF来做出比较漂亮的界面,所有在Winform项目中加入WPF的用户控件,过程如下,FrmLogin是Winform界面,是父窗体,Login.xaml的WPF的UserControl是子窗体,
首先打开FrmLogin的设计界面,在左边的工具栏中找出拖到界面上,并将Dock设置为Fill,其实就是让ElementHost充满整个界面。然后在FrmLogin对应的代码中加入:
1 protected override void onl oad(EventArgs e) 2 { 3 if (!DesignMode) 4 { 5 var login = new Login(this); 6 elementHost1.Child = login; 7 } 8 9 base.OnLoad(e);10 }
下面碰到一个例子,就是我在这个UserControl中点击登录的时候,隐藏自身的同时,也需要隐藏掉父窗体,也就隐藏掉FrmLogin,所以我的做法是,在父窗体代码中设置个属性:MyOpacity为可读写。代码如下:
public double MyOpacity{ get { return this.Opacity; } set { this.Opacity=value; }}protected override void onl oad(EventArgs e){ if (!DesignMode) { var login = new Login(this);//这里将父窗体传递到子窗体Login中去 elementHost1.Child = login; } base.OnLoad(e);}
然后在子窗体代码中加入:
public Login(FrmLogin frm):this() //通过构造函数将FrmLogin也就是父窗体取到{ this.frmLogin = frm; tRepository = new T_HuntersRepository();}private void BtnStart_OnClick(object sender, RoutedEventArgs e){ if (tRepository.Login(userName.Text, userPassword.Text)) { Form1 form1=new Form1(); form1.Show(); this.Opacity = 0; //改变自己的透明度 frmLogin.MyOpacity = 0; //在这里改变父窗体的透明度 } else { MessageBox.Show("用检查用户名和密码!", "系统提示:"); } }
简单的界面如图:,绿色部分为WPF的UserControl,红色为Winform的窗体,点击登录成功后,两者都会隐藏掉。
转载请注明:【帅刺猬课堂】,如果有任何疑问请QQ联系:363608715
【帅刺猬课堂】Winform中使用WPF的UserControl
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。