菜单是程序开发中经常使用的界面元素,合理利用菜单不但可以使用户非常方便地使用程序的功能,而且还能提高工作效率。

001 带历史信息的菜单

要实现保存最近打开的文件,可以将在菜单中最近打开文件的文件名和路径保存到事先建立的 *.ini 文件中,软件启动时读取 *.ini 文件中的数据建立数组菜单,即可实现显示历史菜单的功能。

注意:要建立一个带历史信息的菜单,必须首先添加一个 MenuStrip 菜单控件,创建一个“文件”主菜单,在其下面创建打开、关闭所有、退出等菜单选项。同时向窗体添加 OpenFileDialog 控件,并将主窗体的 IsMdiContainer 属性设为 True。

namespace _001_MenuHistory
{public partial class Form1 : Form{string address;public Form1(){InitializeComponent();address = System.Environment.CurrentDirectory;}//将打开文件路径写入INI文件private void 打开ToolStripMenuItem_Click(object sender, EventArgs e){openFileDialog1.FileName = "";          //设定打开文件对话框的初始化内容为空this.openFileDialog1.ShowDialog();      //显示打开文件对话框StreamWriter s = new StreamWriter(address + "\\Menu.ini", true);    //定义一个以一种特定编码向流中写入数据的对象s.WriteLine(openFileDialog1.FileName);  //写入INI文件s.Flush();                              //清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流s.Close();                              //关闭当前的StreamWriter对象和基础流ShowWindows(openFileDialog1.FileName);  //调用自定义方法ShowWindows}//读取INI文件并将信息加入菜单private void Form1_Load(object sender, EventArgs e){StreamReader sr = new StreamReader(address + "\\Menu.ini");             //声明一个以一种特定编码从字节流中读取字符的对象int i = this.文件ToolStripMenuItem.DropDownItems.Count - 2;             //定义一个ini型变量i并为其赋值while (sr.Peek() >= 0)                                                  //读取INI文件{ToolStripMenuItem menuitem = new ToolStripMenuItem(sr.ReadLine());  //声明一个ToolStripMenuItem对象this.文件ToolStripMenuItem.DropDownItems.Insert(i, menuitem);       //向菜单中添加内容i++;                                                                 //int型变量i递增menuitem.Click += new EventHandler(menuitem_Click);                  //为菜单中的可选项生成处理程序}sr.Close();                                                              //关闭当前的StreamReader对象和基础流}private void menuitem_Click(object sender, EventArgs e){ToolStripMenuItem menu = (ToolStripMenuItem)sender;ShowWindows(menu.Text);}//自定义方法ShowWindows用来加载背景图片并显示窗体public void ShowWindows(string fileName)  {Image p = Image.FromFile(fileName);     //定义一个Image型的变量pForm f = new Form();                    //定义一个Form型的变量ff.MdiParent = this;                     //设定当前窗体为MDI父窗体f.BackgroundImage = p;                  //为窗体f设置背景图片f.Show();                               //显示窗体}private void 退出ToolStripMenuItem_Click(object sender, EventArgs e){Application.Exit();}}


002 菜单动态合并

C#4.0 中已经将弹出菜单封装为 Context MenuStrip 控件,利用该控件中的 Items 对象可以操作菜单中的菜单项。该对象是 ToolStripMenuItem 类型,使用 Item.AddRange 方法可以向弹出菜单中添加菜单项。

创建一个项目,默认窗体为 Form1,向 Form1 窗体中添加一个 MenuStrip 控件用来设计菜单,同时向窗体中添加一个 ContextMenuStrip 控件用来设计右键菜单。再添加一个窗体 Form2,同时向窗体中添加 ContextMenuStrip 控件用来设计右键菜单,Modifiers 属性设置为 Public。

namespace UniteMenu
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void toolStripMenuItem1_Click(object sender, EventArgs e){Form2 f = new Form2();                      //定义一个Form型的对象ff.MdiParent = this;                         //设置f的MDI父窗体f.Show();                                   //显示子窗体f.Resize += new EventHandler(f_Resize);     //为窗体f生成调整大小的处理程序}void f_Resize(object sender, EventArgs e){Form2 f = (Form2)sender;                                    //将sender类型的变量转换为Form型并赋值给fToolStripMenuItem item = new ToolStripMenuItem();           //声明一个ToolStripMenuItem型的对象itemfor (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}); //向菜单项中添加集合}}
}


003 像开始菜单一样漂亮的菜单

在 C#4.0 中,MenuStrip 控件中的子项 ToolStripMenuItem 已经包括了左侧的彩条,实现像开始菜单一样的菜单非常容易,如果想改变左侧竖着的彩条,只要给对应的菜单项设置相应的图片即可。

右键添加要设置图片的菜单项(如:Sava As),选择“Set Image...”,然后 Import 一张本地的图片。


004 任务栏托盘菜单

要实现程序启动时出现在系统托盘中,必须要为窗体添加 NotifyIcon 控件和 ContextMenuStrip 控件,必须为 NotifyIcon 控件的 Icon属性设置图标。

1.创建一个项目,将其命名为 NotifyIconSl,默认窗体为 Form1。

2.向 Form1 窗体添加 NotifyIcon 控件和 ContextMenuStrip 控件,并为 ContextMenuStrip 控件添加子项。

3.选择 NotifyIcon 控件,在其属性窗口中奖 ContextMenuStrip 属性设置为添加到窗体上的 ContextMenuStrip 控件,并为 Icon 属性设置图片。


005 可以拉伸的菜单界面

要实现可以拉伸的菜单,关键是要使用一个开关变量,同时调用 ShowDropDown 方法,显示操作后的结果。

创建一个项目,默认窗体为 Form1,向 Form1 窗体中添加一个 MenuStrip 控件,选中 MenuStrip 控件为其添加子项,双击“展开(关闭)其他项”为其单击事件添加处理代码。

namespace _005_HideMenu
{public partial class Form1 : Form{int i = 2;public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){//启动时设置以下菜单项隐藏this.设置密码ToolStripMenuItem.Visible = false;this.添加用户ToolStripMenuItem.Visible = false;this.忘记密码ToolStripMenuItem.Visible = false;this.修改密码ToolStripMenuItem.Visible = false;this.员工录入ToolStripMenuItem.Visible = false;}private void 展开关闭其他项ToolStripMenuItem_Click(object sender, EventArgs e){switch (i){case 1://设置以下菜单项隐藏this.设置密码ToolStripMenuItem.Visible = false;this.添加用户ToolStripMenuItem.Visible = false;this.忘记密码ToolStripMenuItem.Visible = false;this.修改密码ToolStripMenuItem.Visible = false;this.员工录入ToolStripMenuItem.Visible = false;i = 2;//显示与ToolStripDropDownItem有关的ToolStripDropDownItem控件this.操作ToolStripMenuItem.ShowDropDown();break;case 2:this.设置密码ToolStripMenuItem.Visible = true;this.添加用户ToolStripMenuItem.Visible = true;this.忘记密码ToolStripMenuItem.Visible = true;this.修改密码ToolStripMenuItem.Visible = true;this.员工录入ToolStripMenuItem.Visible = true;i = 1;//显示与ToolStripDropDownItem有关的ToolStripDropDownItem控件this.操作ToolStripMenuItem.ShowDropDown();break;}}}
}


006 级联菜单

制作级联菜单需要使用 MenuStrip 控件。

注意:在使用级联菜单时最好不要超过5层,否则用户在使用时会感觉很不方便。

创建一个项目,默认窗体为 Form1。在 Form1 窗体添加 MenuStrip 控件,选中 MenuStrip 控件为其添加子项和级联子项。

转载于:https://www.cnblogs.com/iwanc/archive/2013/06/12/3130987.html

1.窗体与界面设计-菜单应用实例相关推荐

  1. 视频教程-C#Winform窗体与界面设计-C#

    C#Winform窗体与界面设计 二十多年的企业管理软件开发经历,熟知管理软件的整个开发流程,熟练掌握VFP语言,掌握VB语言,了解JAVA.asp.net.CSS.HTML/HTML5等语言,使用C ...

  2. access数据库窗体设计实验报告_access实验报告窗体和界面设计

    课程名称 信息管理 实验项目名称 窗体和界面设计 学 院 班级 学生姓名 学号 同组人员 日 期 2016 年 11 月 10 日 节次 地点 实验目的:了解不同的窗体: 掌握[窗体设计]工具创建窗体 ...

  3. python界面设计实例-Python GUI项目实战(二)主窗体的界面设计与实现

    前言 上一节我们介绍了登录窗体的GUI设计与功能实现,用户的账号和密码校验完成后应当跳转到主窗体内容,这一节我们将具体介绍主窗体界面的设计与功能实现! 一.基础界面设计 我们新建一个900x640的窗 ...

  4. tkinter项目实战_Python GUI项目实战(二)主窗体的界面设计与实现

    前言 上一节我们介绍了Python GUI项目实战(一)登录窗体的设计与实现,实现了该项目登录窗体的GUI的搭建,用户的账号和密码校验完成后应当跳转到主窗体界面,这一节我们将具体介绍主窗体界面的设计与 ...

  5. delphi 登录界面 主窗体 切换_Python GUI项目实战(二)主窗体的界面设计与实现

    前言 上一节我们介绍了Python GUI项目实战(一)登录窗体的设计与实现,实现了该项目登录窗体的GUI的搭建,用户的账号和密码校验完成后应当跳转到主窗体界面,这一节我们将具体介绍主窗体界面的设计与 ...

  6. c语言主界面设计菜单系统,c语言界面设计代码的操作步骤,你学会了吗

    学计算机的人都知道C语言,而这也是非常常用的一种计算机编程语言.其实c语言运用得当,完全可以编程很多设计代码,帮助你进行界面设计.今天就让小编为大家介绍c语言界面设计. c语言界面设计代码的操作步骤 ...

  7. python界面设计实例-Python GUI项目实战:主窗体的界面设计与实现

    一.基础 from tkinter import * from tkinter.ttk import * import os class MainWindow(Tk): def __init__(se ...

  8. UEFI中的界面设计(一)

    本文目录! 界面设计概论 BDS引导到UIAPP HII驱动 UNI文件 VFR文件 FORMSET FORM VARSTORE TEXT LABEL 其他 最近 我从显示驱动搞到显示LOGO和显示界 ...

  9. Linux - 可视化菜单界面设计

    优化屏幕刷新 问题 刷新多个窗体需要一些繁琐,在一个慢速的链接上,屏幕的绘制相当的慢 目标就是要尽量减少要在屏幕上的绘制的字符数 基本函数 int wnoutrefresh(WINDOW *windo ...

最新文章

  1. python 解压缩 tar 包 或 tar.gz包
  2. Jboss7或者wildfly部署war包的问题
  3. wenbao与最优比率生成树
  4. day 3 list列表生成式
  5. 2020 前端技术发展回顾
  6. 前端学习(3304):函数组件组件父组件子组件forwarRef聚焦
  7. 【编辑器】VSCode+TEXLIVE环境配置,以SJTUthesis为测试用例
  8. android之uniapp自定义基座
  9. [IntelliJ IDEA + EduTools] 从零开始编写一套 Java 教材(一)
  10. 连接局域网中计算机与传输介质的网络设备是,连接局域网中的计算机与传输介质的网络连接设备是。...
  11. 12款高质量的免费 HTML 网页模板下载
  12. c语言 组合问题,c语言排列组合问题
  13. Feescale K60开发笔记3: Tftpd32的使用
  14. 杂文 | 金沙江创投朱啸虎谈微信小程序
  15. 基于Unity3D 的Vuforia SDK开发基础教程
  16. 手游联运平台是怎样开发的?
  17. typora的 ctrl shift k 快捷键和搜狗的快捷键冲突了
  18. 《爱乐之城》月亮与六便士,你选哪个?
  19. 《卓有成效的管理者》——学习心得(四)
  20. Bat脚本编写以及cmd命令

热门文章

  1. ASP.NET母版页和内容页之间如何互相传值?
  2. oracle get_ddl XSL error 解决方法
  3. MongoDB的存储结构及对空间使用率的影响
  4. linux子系统 显卡,bash 漏洞?linux授权命令sudo?windows linux子系统?新手理解的bash环境变量解析漏洞...
  5. 学霸的迷宫-蓝桥杯算法提高-广搜 bfs 经典问题
  6. 1023. 组个最小数 (20)-PAT乙级真题
  7. 组装电脑多少钱一台_客户花9000元组装一台电脑,奸商赚5000块,利润真吓人
  8. perl 判断不包含某字符串
  9. Java-Collections的sort方法对 list 进行排序
  10. 推荐DS书籍阅读笔记