C#入门学习-----菜单应用(添加剂快捷方式、设置菜单项是否可用、修改菜单字体、创建级联菜单、级联菜单的动态合并)

来源:互联网 发布:mac写入不了移动硬盘 编辑:程序博客网 时间:2024/06/11 18:41

欢迎大家提出意见,一起讨论!

转载请标明是引用于 http://blog.csdn.net/chenyujing1234

需要源码请与我联系。

 

1、 为菜单添加快捷方式

 为菜单项设置快捷方式非常简单,设置菜单项的Text属性时,在菜单项文本添加“&”+“字母”即可

使用快捷键时,按下Atl键加指定的字母便可以使用快捷键激活菜单项。

 

设计过程:

在窗口中添加MenuScrip控件。

主要代码如下:

 private void 退出QToolStripMenuItem_Click(object sender, EventArgs e)        {            MessageBox.Show("退出应用程序","提示!");            Close();//退出应用程序        }        private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)        {            MessageBox.Show("已经点击\"打开\"菜单项", "提示!");        }

2、 设置菜单项是否可用

 

菜单可以添加多个菜单项,而菜单项还可以含有多个子菜单项,如果需要禁用菜单中的一部分子菜单要怎么实现呢?

2、1  知识要点

用到了ToolScripMenuItem菜单项Enabled属性。

实现过程:

添加两个按钮:启用菜单项、禁用菜单项。

代码实现为:

 private void button1_Click(object sender, EventArgs e)        {            ToolStripMenuItem P_ToolStripMenuItem =//得到菜单项               (ToolStripMenuItem)menuStrip1.Items[0];            foreach (ToolStripMenuItem item in                P_ToolStripMenuItem.DropDownItems)            {                item.Enabled = true;//启用菜单项            }        }        private void button2_Click(object sender, EventArgs e)        {            ToolStripMenuItem P_ToolStripMenuItem =//得到菜单项   (ToolStripMenuItem)menuStrip1.Items[0];            foreach (ToolStripMenuItem item in                P_ToolStripMenuItem.DropDownItems)            {                item.Enabled = false;//停用菜单项            }        }
3、 将菜单项的字体设置为粗体

弹出菜单项可以包含多个菜单项,可能需要着重地显示某些菜单项,那么将字体设置为粗体是不错选择。

3、1 知识点

用到了ToolSctripItem菜单项的Font属性,用来设置菜单项文本内容的字体。

3、2 实现过程

添加一个按钮,用于设置菜单项中字体为粗体

 

4、 创建级联菜单

4、1  知识点

用到了DropDownItems菜单项集合的Add方法, 用于将指定的菜单项添加到菜单项集合。

4、2  实现过程

程序主要代码为:

 private void Form1_Load(object sender, EventArgs e)        {            ToolStripMenuItem P_ts = (ToolStripMenuItem)menuStrip1.Items[0];// 得到文件菜单项            ToolStripMenuItem ts1 = new ToolStripMenuItem("打开文本文件");  // 创建菜单项            ToolStripMenuItem ts2 = new ToolStripMenuItem("打开XML文件");  // 创建菜单项            ToolStripMenuItem ts3 = new ToolStripMenuItem("打开JPG文件");  // 创建菜单项            ToolStripMenuItem ts4 = new ToolStripMenuItem("打开BMP文件");  // 创建菜单项            ToolStripMenuItem P_ts2 = (ToolStripMenuItem)P_ts.DropDownItems[0]; // 得到子菜单项            P_ts2.DropDownItems.Add(ts1);                                  // 添加菜单项            P_ts2.DropDownItems.Add(ts2);                                  // 添加菜单项            P_ts2.DropDownItems.Add(ts3);                                  // 添加菜单项            P_ts2.DropDownItems.Add(ts4);                                  // 添加菜单项        }


 

5、 级联菜单的动态合并

 

在MDI应用程序中,当MDI子窗体最大化时,子窗体和主窗体的菜单能够自动地合并。这是怎么实现的呢?

5、1  知识点

用到了ContextMenuStrip 控件中Items集合的AddRange方法。

用于将ToolStripItem控件的数据添加到菜单集合中。

实现过程:

设置窗体的IsMdiContainer属性为true,将窗体设置为多文档窗体;

向窗体中添加一个MenuStrip控件和一个ContextMenuStrip控件,分别用于显示菜单和窗体右键菜单。

注: 在窗体中绑定ContextMenuStrip控件时得为窗体的属性“ContextMenuStrip”选择contextMenuStrip1

相关代码:

 

 private void 打开子窗体ToolStripMenuItem_Click(object sender, EventArgs e)        {            Form2 f = new Form2();//创建窗体对象            f.MdiParent = this;//设置父窗体属性            f.Show();//显示窗体            f.Resize += //为窗体添加事件                new EventHandler(f_Resize);        }        void f_Resize(object sender, EventArgs e)        {            Form2 f = (Form2)sender;//得到窗体对象            ToolStripMenuItem item = new ToolStripMenuItem();//创建菜单项            for (int i = 0; i < f.contextMenuStrip2.Items.Count; )//遍历窗体菜单项集合            {                item.DropDownItems.Add(//添加菜单项                    f.contextMenuStrip2.Items[i]);            }            this.contextMenuStrip1.Items.AddRange(//向主窗体中添加菜单项集合                new System.Windows.Forms.ToolStripItem[] {            item});        }