一、实验目的与要求
1. 了解模式窗体和非模式窗体
2. 掌握 MenuStrip 控件的使用
3. 掌握 ToolStrip 控件的使用
4. 掌握 StatusStrip 的使用
二、实验内容与步骤
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MenuStirpDemo.UI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 加ToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox3.Text = (Convert.ToDouble(textBox1.Text) + Convert.ToDouble(textBox2.Text)).ToString();
}
private void 减ToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox3.Text = (Convert.ToDouble(textBox1.Text) - Convert.ToDouble(textBox2.Text)).ToString();
}
private void 乘ToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox3.Text = (Convert.ToDouble(textBox1.Text) * Convert.ToDouble(textBox2.Text)).ToString();
}
private void 除ToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox3.Text = (Convert.ToDouble(textBox1.Text) / Convert.ToDouble(textBox2.Text)).ToString();
}
private void addToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox6.Text = (Convert.ToDouble(textBox4.Text) + Convert.ToDouble(textBox5.Text)).ToString();
}
private void subToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox6.Text = (Convert.ToDouble(textBox4.Text) - Convert.ToDouble(textBox5.Text)).ToString();
}
private void mulToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox6.Text = (Convert.ToDouble(textBox4.Text) * Convert.ToDouble(textBox5.Text)).ToString();
}
private void divToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox6.Text = (Convert.ToDouble(textBox4.Text) / Convert.ToDouble(textBox5.Text)).ToString();
}
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.ShowDialog();
MessageBox.Show(dlg.FileName);
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = 100;
toolStrip1.Items[1].Text = DateTime.Now.ToString();
statusStrip1.Items[0].Text=DateTime.Now.ToString();
}
private void timer1_Tick(object sender, EventArgs e)
{
toolStrip1.Items[1].Text = DateTime.Now.ToString();
statusStrip1.Items[0].Text = DateTime.Now.ToString();
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
toolStrip1.Items[2].Text = e.Location.ToString();
statusStrip1.Items[1].Text = e.Location.ToString();
}
}
}
1、ManuStrip 控件
运行截图:
2、ToolStrip
运行截图:
3、StatuStrip
运行截图:
4、TreeView 和 MenuStrip 菜单
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TreeMenuDemo.UI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
treeView1.Nodes.Clear();
GetMenu(treeView1, menuStrip1);//将menuStrip1控件中的信息添加到treeView1控件中
treeView1.ExpandAll();
}
public void GetMenu(TreeView treeV, MenuStrip MenuS)
{
//textBox1.Text = MenuS.Items[0].Tag.ToString();
for (int i = 0; i < MenuS.Items.Count; i++) //遍历MenuStrip组件中的一级菜单项
{
//将一级菜单项的名称添加到TreeView组件的根节点中,并设置当前节点的子节点newNode1
TreeNode newNode1 = treeV.Nodes.Add(MenuS.Items[i].Text);
newNode1.Tag = int.Parse(MenuS.Items[i].Tag.ToString());
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenu = (ToolStripDropDownItem)MenuS.Items[i];
GetCavernMenu(newNode1, newmenu);//添加多层命令项
}
}
public void GetCavernMenu(TreeNode newNodeA, ToolStripDropDownItem newmenuA)
{
if (newmenuA.HasDropDownItems && newmenuA.DropDownItems.Count > 0)
{
for (int j = 0; j < newmenuA.DropDownItems.Count; j++) //遍历二级菜单项
{
//将二级菜单名称添加到TreeView组件的子节点newNode1中,并设置当前节点的子节点newNode2
TreeNode newNodeB = newNodeA.Nodes.Add(newmenuA.DropDownItems[j].Text);
newNodeB.Tag = int.Parse(newmenuA.DropDownItems[j].Tag.ToString());
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenuB = (ToolStripDropDownItem)newmenuA.DropDownItems[j];
if (newmenuB.HasDropDownItems && newmenuA.DropDownItems.Count > 0)//如果当前命令项有子项
{
GetCavernMenu(newNodeB, newmenuB);//调用递归方法
}
}
}
}
public void frm_show(int n, string FName)
{
switch (n)//通过标识调用各子窗体
{
case 0: break;
case 1:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
case 2:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
case 3:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
case 4:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
case 5:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
case 6:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
case 7:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
case 8:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
case 9:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
case 10:
{
Form2 fp = new Form2();//实例化一个窗体
fp.Text = FName;//设置窗体的名称
fp.ShowDialog();//用模试对话框打开窗体
fp.Dispose();//释放窗体的所有资原
break;
}
}
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
//打开MenuStrip控件或TreeView控件相应的窗体
frm_show(Convert.ToInt16(((ToolStripMenuItem)sender).Tag.ToString()),((ToolStripMenuItem)sender).Text);
}
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
//打开MenuStrip控件或TreeView控件相应的窗体
frm_show(Convert.ToInt16(e.Node.Tag.ToString()), e.Node.Text);
}
}
}