首页 > 其他分享 >winform对于菜单项禁用的理解

winform对于菜单项禁用的理解

时间:2022-11-06 19:14:20浏览次数:51  
标签:index Menu MenuItems mi new 禁用 菜单项 Click winform

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Drawing;
  6 using System.Windows.Forms;
  7 
  8 namespace StandardMenu
  9 {
 10     class StandardMenu:Form
 11     {
 12         MenuItem miFileOpen, miFileSave;
 13         MenuItem miEditCut, miEditCopy, miEditPaste;
 14 
 15         //for popup code
 16         bool bDocumentPresent = true;
 17         bool bNonNullSelection = false;
 18         bool bStuffInClipboard = true;
 19 
 20         static void Main(string[] args)
 21         {
 22             Application.Run(new StandardMenu());
 23         }
 24         public StandardMenu()
 25         {
 26             Text = "Standard Menu!";
 27             Menu = new MainMenu();
 28 
 29             //File
 30             MenuItem mi = new MenuItem("&File");
 31             mi.Popup += new EventHandler(MenuFileOnPopup);
 32             Menu.MenuItems.Add(mi);
 33             int index = Menu.MenuItems.Count - 1;
 34 
 35             //测试index
 36             //在File处,index值是1
 37             Console.WriteLine(Menu.MenuItems.Count);
 38 
 39             //Fiel Open
 40             miFileOpen = new MenuItem("&Open...");
 41             miFileOpen.Click += new EventHandler(miFileOpen_Click);
 42             miFileOpen.Shortcut = Shortcut.CtrlO;
 43             Menu.MenuItems[index].MenuItems.Add(miFileOpen);
 44 
 45             //File Save
 46             miFileSave = new MenuItem("&Save");
 47             miFileSave.Click += new EventHandler(miFileSave_Click);
 48             miFileSave.Shortcut = Shortcut.CtrlS;
 49             Menu.MenuItems[index].MenuItems.Add(miFileSave);
 50 
 51             //Horizontal Line
 52             mi = new MenuItem("-");
 53             Menu.MenuItems[index].MenuItems.Add(mi);
 54 
 55             //File Exit
 56             mi = new MenuItem("&E&xit");
 57             mi.Click += new EventHandler(miFileEdit_Click);
 58             Menu.MenuItems[index].MenuItems.Add(mi);
 59 
 60             //Edit
 61             mi = new MenuItem("&Edit");
 62             mi.Popup +=new EventHandler(MenuEditOnPopup);
 63             Menu.MenuItems.Add(mi);
 64             index = Menu.MenuItems.Count - 1;
 65 
 66             //测试index
 67             //在Edit处,index值是2
 68             Console.WriteLine(Menu.MenuItems.Count);
 69 
 70             //Edit Cut
 71             miEditCut = new MenuItem("Cu&t");
 72             miEditCut.Click += new EventHandler(miEditCut_Click);
 73             miEditCut.Shortcut = Shortcut.CtrlX;
 74             Menu.MenuItems[index].MenuItems.Add(miEditCut);
 75 
 76             //Edit Copy
 77             miEditCopy = new MenuItem("&Copy");
 78             miEditCopy.Click += new EventHandler(miEditCopy_Click);
 79             miEditCopy.Shortcut = Shortcut.CtrlC;
 80             Menu.MenuItems[index].MenuItems.Add(miEditCopy);
 81 
 82             //Edit Paste
 83             miEditPaste = new MenuItem("&Paste");
 84             miEditPaste.Click += new EventHandler(miEditPaste_Click);
 85             miEditPaste.Shortcut = Shortcut.CtrlV;
 86             Menu.MenuItems[index].MenuItems.Add(miEditPaste);
 87 
 88             // Help
 89             mi = new MenuItem("&Help");
 90             Menu.MenuItems.Add(mi);
 91             index = Menu.MenuItems.Count - 1;
 92 
 93             //测试index
 94             //在Help处,index值是3
 95             Console.WriteLine(Menu.MenuItems.Count);
 96 
 97             // Help About
 98             mi = new MenuItem("&About StandarMenu...");
 99             mi.Click +=new EventHandler(MenuHelpAboutOnClick);
100             Menu.MenuItems[index].MenuItems.Add(mi);
101         }
102 
103         void MenuEditOnPopup(object sender, EventArgs e)
104         {
105             miEditCut.Enabled = bNonNullSelection;
106             miEditCopy.Enabled = bNonNullSelection;
107             miEditPaste.Enabled = bStuffInClipboard;
108         }
109 
110         void MenuHelpAboutOnClick(object sender, EventArgs e)
111         {
112             MessageBox.Show("This should be a File About box!", Text);
113         }
114 
115         void miEditPaste_Click(object sender, EventArgs e)
116         {
117             MessageBox.Show("This should be a File Edit Paste dialog box!", Text);
118         }
119 
120         void miEditCopy_Click(object sender, EventArgs e)
121         {
122             MessageBox.Show("This should be a File Edit Save dialog box!", Text);
123         }
124 
125         void miEditCut_Click(object sender, EventArgs e)
126         {
127             MessageBox.Show("This should be a File Edit Cut dialog box!", Text);
128         }
129 
130         void miFileEdit_Click(object sender, EventArgs e)
131         {
132             Close();
133         }
134 
135         void miFileSave_Click(object sender, EventArgs e)
136         {
137             MessageBox.Show("This should be a File Save dialog box!", Text);
138         }
139 
140         void miFileOpen_Click(object sender, EventArgs e)
141         {
142             MessageBox.Show("This should be a File Open dialog box!",Text);
143         }
144 
145         void MenuFileOnPopup(object sender, EventArgs e)
146         {
147             miFileSave.Enabled = bDocumentPresent;
148         }
149     }
150 }

以上代码中禁用了“复制”和“剪切”菜单,所以从下图可以看出禁用的实际效果 。

 

还有,代码中的Menu.MenuItems.Count是随着主菜单项的加入,逐渐增加的;

 

标签:index,Menu,MenuItems,mi,new,禁用,菜单项,Click,winform
From: https://www.cnblogs.com/chenlight/p/16863391.html

相关文章

  • Winform窗体常用属性
    一、WinForm:客户端程序制作-C/S(B/S:服务器端)它是基于.NETFramework框架上运行,不是必须在windows系统上才能运行---------------------------------------------------......
  • 使用Winform绘制仿造微信的客户
    由于工作需要,开发一个聊天工具,安卓,IOS,Web都开发好了,还需要一个客户端形式的聊天工具,要求是简介大方好用,呵呵哒,好看我不知道,但是模仿一个到时可以的,说干就干,经过几天的时......
  • STM32禁用JTAG,并使用JTAG引脚为通用IO口(转载)
    STM32禁用JTAG,并使用JTAG引脚为通用IO口两种禁用模式标准库配置:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF,ENABLE);//......
  • winform 窗口布局自适应分辨率
    网上相关的资料都比较多,我觉得太麻烦,忽然想起网页字体用px为单位则不会随分辨率大小变化,不知道winform是否也可以这样设置。于是就把窗体和设置过字体的控件的字体单位都改......
  • 手把手教你用DevExpress WinForm添加和自定义工具栏皮肤选择器
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office......
  • c# winform使用NOPI读取Excel读取图片
    需求:在Winform使用NOPI做导入时候,需要导入数据的同时导入图片。虽然代码方面不适用(我好像也没仔细看过代码),但是感谢大佬给了灵感http://www.wjhsh.net/IT-Ramon-p-13100......
  • MAUI 初体验 联合 WinForm 让家里废弃的手机当做电脑副品用起来
    软件效果图软件架构草图效果解释:运行winform端后使用ctrl+c先复制任何词语,然后ctrl+空格就可以将翻译结果显示在安卓,IOS,windows甚至mac任意客户端1:使用V......
  • 在Winform程序中设置管理员权限及为用户组添加写入权限
    在Winform程序中设置管理员权限及为用户组添加写入权限2017-12-04 1514简介:在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程......
  • 学习笔记-绕过php禁用函数
    bypass_disable_function相关文章&Source&ReferenceCTF中的命令执行绕过无需sendmail:巧用LD_PRELOAD突破disable_functionsphp中函数禁用绕过的原理与利用相......
  • Winform 桌面程序界面设计篇
    目录​​1.仿Office版本界面设计:​​​​2.系统常规设计界面:​​​​3.仿360电脑管家界面设计:​​1.仿Office版本界面设计:本设计风格源码下载2.系统常规设计界面:3.仿......