构造函数传值 和仅打开唯一窗体

Posted 不会撩妹的白芒果

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造函数传值 和仅打开唯一窗体相关的知识,希望对你有一定的参考价值。

登陆窗体:    

     制作一个登录窗口Form1,要求登陆后打开一个新窗口,隐藏该窗口(注:关闭新窗口时,该窗口不会关闭,程序未结束,需要用到构造函数传值来关闭新窗口的同时,关闭该登录窗口.)

 Form2 f2 = new Form2(this, user);//横线部分与下方讲的传值相对应
 f2.Show();
 this.Visible = false;

构造函数传值

将登陆窗口中输入的用户名传值给Form2窗体,Form2关闭时同时将Form1关闭

复制代码
     Form1 F1 = null;
        Users User = null;
        public Form2(Form1 f1,Users user)
        {
            InitializeComponent();
            label1.Text = user.Username+",欢迎您!";//将Form1登陆界面输入的用户名传值给label1
            F1 = f1;
            User = user;
        }
        private void Form2_FormClosed(object sender, FormClosedEventArgs e)//关闭form2时的触发事件,Closed和Closing都可以
        {
            F1.Close();//本窗口关闭时,同时将Form1窗口同时关闭
        }
复制代码

打开唯一窗体

如果多次点击同一个按钮,打开了多个相同的窗体,这样是不合理的,同样可以通过构造函数传值来控制,在主窗体中创建一个list<Form>公共集合,还可实现最小化时,点击按钮实现窗口弹出还原效果,同样可以实现焦点从主窗体转移到新窗体

复制代码
//主窗体代码
public List<Form> Flist = new List<Form>(); private void button2_Click(object sender, EventArgs e)//点击修改按钮 { int count = 0;//定义一个标记变量,count为零时表示修改窗口未打开 Form1 f1 = new Form1(this,User); foreach (Form f in Flist) { if (f is Form1)//修改窗口若打开 { f.Focus();//焦点不在修改窗口,点击修改按钮将焦点定到修改窗口 if (f.WindowState == FormWindowState.Minimized)//若修改窗口最小化,点击修改按钮,将修改窗口还原 { f.WindowState = FormWindowState.Normal; } count++; } } if (count == 0) { Flist.Add(f1);//若修改窗口未打开,点击修改按钮,将修改窗口打开 f1.Show(); } }
复制代码
复制代码
//新窗口代码    当Form2关闭的时候,设置关闭事件,将From2自己从集合中删掉 
复制代码

     Form3 F3 = null;//定义全局变量用于在下面使用,先等于空,在构造函数运行,也就是打开窗体的时候再赋值
     public Form1(Form3 f3,Users user)
        {
            F3 = f3;
            InitializeComponent();
        }    
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
       F3.Flist.Remove(this);//移除特定对象的第一个匹配项(将Form1从自己的集合中删除)
     }
复制代码
复制代码

ComboBox下拉列表数据绑定

ComboBox绑定数据源后,可设置显示的数据与其value数据,value数据是不显示出来的,但是可以在程序中使用,尤其方便在数据库多个表之间查找数据

 List<Class> list = new ClassData().Select();
            控件名.DataSource = list;//班级下拉列表获取数据源
            控件名.DisplayMember = "classname";//班级下拉列表显示的值
            控件名.ValueMember = "classcode";//班级下拉列表隐藏值

 

以上是关于构造函数传值 和仅打开唯一窗体的主要内容,如果未能解决你的问题,请参考以下文章

winform打开唯一窗口构造函数传值

多窗体窗体传值打开唯一窗体操作

2017-04-27布局及容器控件打开多窗体构造函数传值打开唯一窗口

C#-WinForm-跨窗体 构造函数传值 及应用—登录式窗口传值如何关闭主页面时关闭应用程序如何打开唯一窗口—★★★★★五星重量级

winform修改打开窗体构造函数传值

winform修改打开窗体构造函数传值