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";//班级下拉列表隐藏值
  • 相关阅读:
    Android : iperf-2.0.4 网络测试工具
    Android : SELinux 简析&修改
    Android : 修改内核源码 and 编译、打包成新的boot.img
    Bluedroid: 音频数据的传输流程
    Bluedroid: 蓝牙协议栈源码剖析
    【Java】 剑指offer(54) 二叉搜索树的第k个结点
    【Java】 剑指offer(53-3) 数组中数值和下标相等的元素
    【Java】 剑指offer(53-2) 0到n-1中缺失的数字
    【Java】 剑指offer(53-1) 数字在排序数组中出现的次数
    【Java】 剑指offer(52) 两个链表的第一个公共结点
  • 原文地址:https://www.cnblogs.com/baimangguo/p/6159844.html
Copyright © 2011-2022 走看看