WinForm 多窗体、菜单和工具栏控件

多窗体:

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 工具条容器 

  可将工具条放入其中

原文地址:https://www.cnblogs.com/hcx999/p/5897859.html