• 【帅刺猬课堂】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

    You can reach me by surfing the web ---- huntjobs.cn,or sending e-mails to me,Here is my qq MailBox:1424870395@qq.com
  • 相关阅读:
    day103 跨域请求 与频率访问限制.
    day 102 GIT 的使用方法.
    day 101 天
    day 100天 VUE 父子传值,单页面.
    JS 在元素后插入元素
    JS 网页加载后执行多个函数
    MySQL 一般操作语句
    PHP 通过设置表单元素name属性生成数组
    PHP SQL语气中value必须添加单引号
    PHP 单引号和双引号的区别
  • 原文地址:https://www.cnblogs.com/HedgehogBlog/p/4259324.html
Copyright © 2020-2023  润新知