首页 > 代码库 > 构造函数传值 和仅打开唯一窗体

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

登陆窗体:    

     制作一个登录窗口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";//班级下拉列表隐藏值

 

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