zoukankan      html  css  js  c++  java
  • 构造函数传值 和仅打开唯一窗体

    登陆窗体:    

         制作一个登录窗口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";//班级下拉列表隐藏值
  • 相关阅读:
    bzoj2004(矩阵快速幂,状压DP)
    bzoj1242(弦图判定)
    uva1659(最大费用循环流)
    bzoj1009
    bzoj2893(费用流)
    bzoj4873(最大权闭合子图)
    bzoj2879(动态加边费用流)
    51nod 1239 欧拉筛模板
    poj2774 sa模版
    洛谷3391文艺平衡树
  • 原文地址:https://www.cnblogs.com/baimangguo/p/6159844.html
Copyright © 2011-2022 走看看