多窗体:
1、一个窗体隐藏,另一个窗体打开。且后一个窗体关闭,两个窗体都结束,也就是整个程序都结束
-- 需要构造函数传值,将窗体传到另一个窗体中去
2、窗体只能打开一个
-- 创建一个全局的泛型集合,为了放置全部打开的窗体
窗体关闭后,可以再次打开;
-- 当窗体关闭时,清除Form1中集合中的此窗体对象记录
当窗体已经打开,再次点击打开按钮,已打开的窗体重新显示并焦点进入
-- 找到已打开对象,将设置WindowState属性,使用Fouces方法
3、窗体之间的传值和控制
传值:构造函数传值
控制:第一步,找到窗体对象,第二步,将窗体对象的控件值更改
注意:要将窗体中的对象访问权限修改
-- private改成public
4、提示框类型的窗体:当前窗体不关闭,无法对其他窗体进行任何操作
-- 使用 ShowDialog();
Form1代码:
List<Form> Flist = new List<Form>();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
bool has = false;
Form2 f2 = new Form2(this);
foreach (Form F in Flist)
{
if (F.Name == f2.Name)
{
has = true;
F.WindowState = FormWindowState.Normal;
F.Focus();
}
}
if (has)
{
f2.Close();
}
else
{
Flist.Add(f2);
f2.Show();
}
}
private void button2_Click(object sender, EventArgs e)
{
bool has = false;
Form3 f3 = new Form3();
foreach (Form F in Flist)
{
if (F.Name == f3.Name)
{
has = true;
}
}
if (has)
{ }
else
{
Flist.Add(f3);
f3.Show();
}
}
public void DeleteForm(Form F)
{
Flist.Remove(F);
}
Form2代码:
Form1 F1 = null;
public Form2(Form1 f1)
{
InitializeComponent();
F1 = f1;
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if (F1 != null)
{
F1.DeleteForm(this);
}
}
菜单和工具栏控件:
1、ContextMenuStrip 右键菜单栏
2、MenuStrip 顶部菜单栏
分割线 :- 或 右键,插入Separator
插入标准项:右键,插入标准项;
快捷键:每一个选项右键,属性的最下面可以设置快捷键,不管选项隐藏还是整个菜单都隐藏,快捷键都起作用。
3、 StatusStrip 底部菜单栏
4、 TooplStrip 工具条
5、 TooplStripContainer 工具条容器
可将工具条放入其中