请教,右键菜单增加快捷键,响应代码怎么写?

lijy8421 2016-01-27 12:12:15
请教,右键菜单增加快捷键,响应代码怎么写?
例如,复制键,Ctrl+C已经设置好了

private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
{
string selectText = ((TextBox)contextMenuStrip1.SourceControl).SelectedText;
if (selectText != "")
{
Clipboard.SetText(selectText);
}
}
鼠标点击可以,但用快捷键就抛异常了,(TextBox)contextMenuStrip1.SourceControl为空,异常提示未将对象引用设置到对象实例,对于快捷键该怎么改呢?谢谢!
...全文
223 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvfeng19806001 2016-01-27
  • 打赏
  • 举报
回复
右键如果加快捷键,每个项都有属性ShortcutKeys,可以设置! 如果你在keydown事件中,可以用System.Windows.Forms.Keys 这个枚举,如果非得用keychar又不知道具体值,可以用调试方式,按下相应的键,获取实际值!
lijy8421 2016-01-27
  • 打赏
  • 举报
回复
现在还有一疑问,刚测试时ctrl+c这是自带的,但我测试不管用,后来发现是文本框输入过滤问题; 然后发现ctrl键没有对应的keychar值呢,ctrl+不同的键得到的keychar值哪里可以查到,发现ctrl+c的keychar==1; 谁能帮我解释下呢?
lijy8421 2016-01-27
  • 打赏
  • 举报
回复
shingoscar大师说的很对,谢谢,学习了!
Poopaye 2016-01-27
  • 打赏
  • 举报
回复
因为弹出菜单的时候指定了是在TextBox上弹出,所以SourceControl就是这个TextBox 你用快捷键没有上面这步,所以SourceControl是空 解决方案可以用ActiveControl获取当前右焦点的控件 TextBox c = this.ActiveControl as TextBox; if(c != null) ....
lijy8421 2016-01-27
  • 打赏
  • 举报
回复
发现点问题,应该是我的文本输入过滤字符出的问题! ctrl键没有对应的keychar值吗,ctrl+不同的键得到的keychar值哪里可以查到,发现ctrl+c的keychar==1;
opm161 2016-01-27
  • 打赏
  • 举报
回复
shortcutKey属性不行吗
lijy8421 2016-01-27
  • 打赏
  • 举报
回复
又测试了下,复制粘贴确实不用实现快捷键,但我想知道这样实现出错的原因和怎么改,因为我还有一些其它项想实现快捷键,同样也出错!
lijy8421 2016-01-27
  • 打赏
  • 举报
回复
楼上的大师们,能够详细解释下为什么多余呢,windows自带吗,没有啊,我直接ctrl+c是无法实现复制功能的啊!
Poopaye 2016-01-27
  • 打赏
  • 举报
回复
引用 2 楼 lijy8421 的回复:
为什么是多余的呢 ?右键菜单是自己建的,其中包括复制粘贴等项!
我没说你右键菜单是多余的 是快捷键 ctrl+c这是自带的
exception92 2016-01-27
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
如果只是复制功能,那这快捷键是多余的
+1
opm161 2016-01-27
  • 打赏
  • 举报
回复
这个应该改属性就可以了吧
lijy8421 2016-01-27
  • 打赏
  • 举报
回复
为什么是多余的呢 ?右键菜单是自己建的,其中包括复制粘贴等项!
Poopaye 2016-01-27
  • 打赏
  • 举报
回复
如果只是复制功能,那这快捷键是多余的

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧