【帅刺猬课堂】Winform中使用WPF的UserControl

今天准备做一个登录界面的时候,想用WPF来做出比较漂亮的界面,所有在Winform项目中加入WPF的用户控件,过程如下,FrmLogin是Winform界面,是父窗体,Login.xaml的WPF的UserControl是子窗体,

首先打开FrmLogin的设计界面,在左边的工具栏中找出拖到界面上,并将Dock设置为Fill,其实就是让ElementHost充满整个界面。然后在FrmLogin对应的代码中加入:

 1 protected override void OnLoad(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 OnLoad(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;      //在这里改变父窗体的透明度
//也可以使用Hide方法来隐藏
//this.Hide();
//frmLogin.Hide(); }
else { MessageBox.Show("用检查用户名和密码!", "系统提示:"); } }

简单的界面如图:,绿色部分为WPF的UserControl,红色为Winform的窗体,点击登录成功后,两者都会隐藏掉。

转载请注明:【帅刺猬课堂】http://www.cnblogs.com/WPFBlog/p/4259324.html,如果有任何疑问请QQ联系:363608715

 

转载于:https://www.cnblogs.com/HedgehogBlog/p/4259324.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值