关于C#ToolStripMenuItem的快捷键设置问题

我将ToolStripMenuItem控件的ShortcutKeys属性设置为Keys.Control | Keys.P,ShowShortcutKeys属性也设置true了,可快捷键却没有显示在 ToolStripMenuItem 旁边,求解?(我知道窗体设计程序可以成功)
代码里变量tsm1的类ToolStripMenuItems 是ToolStripMenuItem类的派生类,把它改为ToolStripMenuItem都可以,不好意思,忘记改了。

在 ShortcutKeys 设置了值且 ShowShortcutKeys 为 true 的情况下,想要显示菜单项快捷键,需要满足:

1、只有子菜单项才能显示快捷键,顶级菜单项不会显示。

2、如果菜单项 AutoSize = false,那么 Width 需足够。

3、菜单项的 ShortcutKeyDisplayString 需为空。追问

看我贴出的代码,三个条件我都满足啊

追答ToolStripMenuItems tsm1 = new ToolStripMenuItems("tsm1");

ToolStripMenuItems 这是个什么类?你自己定义的?

追问

哦,那个是ToolStripMenuItem类的派生类,我没有怎么设置,你把它改为ToolStripMenuItem类都可以。

追答

实测问题由

toolStripMenuItem1.DropDown = toolStripDropDown1;

引起。

 

截图如下:

追问

不好意思,这么才迟回复。谢谢啊,真的成功了,不过为什么toolStripMenuItem1.DropDown = toolStripDropDown1;会让快捷键无法显示呢?

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-12
toolStripMenuItem1.DropDown = toolStripDropDown1;

把这句去掉追问

这个应该不能去掉吧,因为我就是想把列表加到toolStripMenuItem1控件里,去掉不就什么都没显示,而且也觉得我的问题与这个无关啊。

追答

你先试一下。

追问

试过了,连菜单项都没有显示

追答

ToolStripMenuItems 这个类是你自己定义的吗?

追问

是的,ToolStripMenuItems 是ToolStripMenuItem类的派生类,我没有怎么设置,你把它改为ToolStripMenuItem类都可以

追答

如果你注掉了那句,还是不行的话,问题应该是出在你这个类上了。可以帖上来看看。

追问

不好意思,这么迟才回复。谢谢你的帮助,去掉toolStripMenuItem1.DropDown = toolStripDropDown1;是对的,而之所以去掉后又什么都没显示,我又对照了网友然后去远足的代码,发现是因为toolStripMenuItem没有设置文本或图案(他在toolStripMenuItem1被new时,传入了参数“toolStripMenuItem1”,而我则是null)

追答

解决了就好

追问

嗯,谢谢你的耐心回答

第2个回答  2014-10-12
父控件是什么呢?有相关设置吗追问

已经贴出了主要代码

关于C#ToolStripMenuItem的快捷键设置问题
1、只有子菜单项才能显示快捷键,顶级菜单项不会显示。2、如果菜单项 AutoSize = false,那么 Width 需足够。3、菜单项的 ShortcutKeyDisplayString 需为空。

C# ToolStripMenuItem
我在VS2005上面都没找到你说的,你是不是说的工具栏的快捷按钮的背景图片更改啊??我试了更改后能用啊,鼠标移上去不会被覆盖,别是你还定义了MouseMove事件或者添加了ToolTip控件了吧??

...工具栏中使用的toolStripMenuItem中的checked属性生效时,那个对勾偏...
建立一j个wMFC的SDI,然后在 resource界面里修改Toolbar,然后给每个u按钮编一n个n函数就好了l。哦,刚才j看到了r楼主追加的问题,是这样的: 2、如果你需要点一s下h就抬起来的效果,那么i在把ID和函数对应的时候要用 ON_COMMAND(ID_SAVE, &Cpix_editView::OnFileSave)这种形式 2、如果你需要点...

menuStrip中点击某项后变灰 C#
buttonSome.Enabled=false;就可以了 这里就用到了控件的 Enabled 属性 控件都应该有这个属性 这不就对了吗 你一次把问题说明白点不就行了嘛 不好意思 拉一个menuStrip 效果如图 private void 开始SToolStripMenuItem_Click(object sender, EventArgs e){ this.开始SToolStripMenuItem.Enabled = false;...

C#问题,关于快捷菜单项,不显示
你的在需要有右键的控件上指定ContextMenuStrip 比如在Form上点右键要显示右键菜单,在窗体的属性中设置ContextMenuStrip属性

c#编写菜单栏时出错”当前上下文中不存在名称menuitem_Click...
void menuitem_Click(object sender, EventArgs e){ ToolStripMenuItem Mymeun = (ToolStripMenuItem)sender;ShowWindows(Mymeun.Text);} 可以添加这个函数,就可以了。

C# 中 如何实现menuStrip菜单栏中ToolStripMenuItem不可点击(灰色...
打开ToolStripMenuItem.Enabled = true;关闭ToolStripMenuItem1.Enabled =false;

...menuStrip中如何根据名字找到 toolstripmenuitem ? 详细如下:_百度...
ToolStripItem[] tsItems = menuStrip.Items.Find("更改密码", true);if (tsItems.Length > 0){ tsItems[0].Enabled = true;}

c#怎么设置menu子菜单的可用
根据菜单项的名称,在需要的时候改变其Enable属性就可以了,比如改变“toolStripMenuItem1”这个菜单项的可用状态:设置为不可用:this.toolStripMenuItem1.Enabled = false;设置为可用:this.toolStripMenuItem1.Enabled = true;希望对你有帮助,还有疑问请追问或是Hi ...

C# 中如何实现menuStrip菜单栏中ToolStripMenuItem勿点击多次
\/\/\/ <param name="MdiParentForm"><\/param> \/\/\/ <returns><\/returns> private static bool ShowChildForm(string p_ChildrenFormText, Form MdiParentForm){ int i;\/\/依次检测当前窗体的子窗体 for (i = 0; i < MdiParentForm.MdiChildren.Length; i++){ \/\/判断当前子窗体的Text属性值是否...

相似回答