C#在Winform窗口开发中自定义主菜单及设置主菜单的打开方式
public partial class MainForm : Form
{
public static Form fm = null;
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
#region 菜单管理
ToolStripMenuItem fileMenu = new ToolStripMenuItem("文件(&F)"); // &F 表示快捷键 Alt+F
// 2. 创建子菜单项
ToolStripMenuItem newItem = new ToolStripMenuItem();
newItem.Text = "新建(&N)";
newItem.Name = "NewFile";
newItem.Tag = "newfile";
newItem.ToolTipText = "1";
newItem.AccessibleName = "aaaaa";//可做为参数传递
newItem.ShortcutKeys = Keys.Control | Keys.N; // 设置快捷键 Ctrl+S
ToolStripMenuItem openItem = new ToolStripMenuItem();
openItem.Text = "打开(&O)";
openItem.Name = "OpenFile";
openItem.Tag = "openfile";
openItem.ToolTipText = "22";
openItem.AccessibleName = "bbbbb";//可做为参数传递
fileMenu.DropDownItems.Add(newItem);
fileMenu.DropDownItems.Add(openItem);
menuStrip1.Items.Add(fileMenu);
#endregion
SetMenuClick();
}
public void OnNewClicked(string aaa)
{
}
/// <summary>
/// 主要控件初始化
/// </summary>
public void SetMenuClick()
{
//内容pannel赋值
//菜单strip赋值
var menus = this.menuStrip1.Items;//获取7个主菜单
foreach (ToolStripMenuItem item in menus)//循环主菜单
{
foreach (ToolStripItem temp in item.DropDownItems)//循环主菜单下的子菜单
{
temp.Click += new EventHandler(ToolStripItem_Click);//给子菜单绑定点击
}
}
}
/// <summary>
/// 切换内容,重置panel
/// </summary>
/// <param name="form"></param>
public void ShowForm(Form form)
{
panel1.Visible = false;
// 释放之前 panel 里面的控件
foreach (Control item in panel1.Controls)
{
item.Dispose();
}
// 设置窗体的层级
form.TopLevel = false;
// 去除边框
form.FormBorderStyle = FormBorderStyle.None;
// 设置停靠
form.Dock = DockStyle.Fill;
// 重置
Panel son = new Panel();
son.Dock = DockStyle.Fill;
son.Controls.Clear();
son.Controls.Add(form);
panel1.Controls.Clear();
panel1.Controls.Add(son);
form.Show();
Thread.Sleep(100);
panel1.Visible = true;
}
/// <summary>
/// 顶部菜单点击逻辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ToolStripItem_Click(object sender, EventArgs e)
{
//定位目标
ToolStripItem item = (ToolStripItem)sender;
if (fm != null) fm.Close();
MessageBox.Show(item.Tag.ToString()+"=="+item.AccessibleName);
switch (item.Tag)
{
// 系统菜单
case "company": /*fm = new EditCompany();*/ break;//公司
default:
return;
}
if(fm!= null)ShowForm(fm);
}
}
查看更多关于C#在Winform窗口开发中自定义主菜单及设置主菜单的打开方式的详细内容...