zoukankan      html  css  js  c++  java
  • 【帅刺猬课堂】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
  • 相关阅读:
    MIne FirstBlog
    P6563 [SBCOI2020]一直在你身旁
    P6563 [SBCOI2020]一直在你身旁
    T122085 [SBCOI2020]时光的流逝
    LC 918. Maximum Sum Circular Subarray
    1026 Table Tennis
    LC 1442. Count Triplets That Can Form Two Arrays of Equal XOR
    LC 1316. Distinct Echo Substrings
    LC 493. Reverse Pairs
    1029 Median (二分)
  • 原文地址:https://www.cnblogs.com/HedgehogBlog/p/4259324.html
Copyright © 2011-2022 走看看