多窗体、菜单和工具栏
一、多窗体
1 从form1 打开form2
(1)不隐藏form1
Form2 f2 = new Form2(); f2.Show();//打开Form2
(2)隐藏form1
this.Hide();
2 构造函数传值
(1)传窗体
Form1代码: Form2 f2 = new Form2(this); f2.Show(); Form2代码: Form1 F1=null;//声明Form1 public Form2(Form1 f1)//构造函数 { InitializeComponent(); F1 = f1;//将传进来的窗体赋给声明的值,这样才能在全局使用 }
(2)传普通值
Form1代码: Form2 f2 = new Form2(textBox1.Text); f2.Show(); Form2代码: Form1 F1=null;//声明Form1 public Form2()//构造函数 { InitializeComponent(); textBox1.Text = uname + ",欢迎您回来!"; }
3 关上form2时form1也关闭
form2关闭时,触发FormClosing事件,从而执行里边的语句
private void Form2_FormClosing(object sender, FormClosingEventArgs e) { F1.Close(); //关闭form1 }
4 提示框类型的窗体
不关闭这个类型的窗体其它窗体不能操作
将f2.Show();
改成f2.ShowDialog();
5 只显示一个窗体
Form1代码:
List<Form> list = new List<Form>();//定义全局变量,泛型集合接收打开的窗体 private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == "zhang" && textBox2.Text == "1234") { bool b = false;//布尔类型,判断Form2是否已经打开 Form2 f2 = new Form2(this);//实例化Form2,创建出一个对象 foreach (Form f in list)//遍历集合,看看是否已经打开Form2 { if (f.Name == f2.Name)//若集合中存在与Form2的name值相同的窗体 { b = true;//true已经打开 f.WindowState = FormWindowState.Normal;//若最小化,让其正常显示 f.Focus();//将焦点移到Form2 } } if (b) { f2.Close();//若已经有打开的,将这个新打开的关闭,节省内存 } else { list.Add(f2);//若没有打开的,将其添加到泛型集合 f2.Show();//打开Form2 } } } public void delete(Form f)//从集合中移除一个窗体 { list.Remove(f); }
Form2代码
Form1 F1=null;//声明Form1 public Form2(Form1 f1)//构造函数 { InitializeComponent(); F1 = f1;//将传进来的窗体赋给声明的值,这样才能在全局使用 } private void Form2_FormClosing(object sender, FormClosingEventArgs e) { F1.delete(this);//当关闭Form2时,调用Form1中定义的函数,删除集合中的Form2 }
6 窗体控制
第一步,找到窗体对象,第二步,将窗体对象的控件值更改
注意:要将窗体中的对象访问权限修改
form2代码:
private void button1_Click(object sender, EventArgs e) { if(F1!=null) { F1.button1.Text = textBox2.Text;//将form2中的值赋值给form1中的button1 } }
二、菜单和工具栏
1 MenuStrip 顶部菜单栏
(1)插入标准项:在这个控件上右键--插入标准项;
(2)分割线 :- 或 右键插入 Separator
(3)快捷键:
每一个项右键属性的最下面可以设置快捷键,不管选项隐藏还是菜单隐藏,快捷键都管用。
ShortcutKeys 设置快捷键
ShowShortcutKeys 快捷键是否显示
2 ContextMenuStrip 右键菜单
每一个控件都可以设右键菜单,在控件行为中ContextMenuStrip属性
3 StatusStrip底部菜单
可以放标签、进度条、菜单条
4 TooplStrip 工具条
5 TooplStripContainer 工具条容器
可将工具条放入其中