构造函数传值 和仅打开唯一窗体
登陆窗体:
制作一个登录窗口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";//班级下拉列表隐藏值