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";//班级下拉列表隐藏值
  • 相关阅读:
    hdu 4614 线段树 二分
    cf 1066d 思维 二分
    lca 最大生成树 逆向思维 2018 徐州赛区网络预赛j
    rmq学习
    hdu 5692 dfs序 线段树
    dfs序介绍
    poj 3321 dfs序 树状数组 前向星
    cf 1060d 思维贪心
    【PAT甲级】1126 Eulerian Path (25分)
    【PAT甲级】1125 Chain the Ropes (25分)
  • 原文地址:https://www.cnblogs.com/baimangguo/p/6159844.html
Copyright © 2011-2022 走看看