我已经将一些自定义MenuItem对象添加到ContextMenuStrip控件。
但是,添加我的对象已经完全吹走了控件中已经存在的非常有用的菜单项( TreeVIEw , TextBox和DataGrIDVIEw )。
有没有人能够成功地合并这些项目?
为什么Microsoft.Build.Evaluation在64位PC上将$(Programfiles)评估为“c: program files”?
如何使用来自资源的值和来自XAML中Binding的值格式化string?
.NET核心,windows Nano服务器和System.Management.automation
奇怪的线程NullReferenceException当读取存在的值?
.Net windows服务和fileSystemWatcher问题
是否有可能使用WCF与windows内核模式软件进行通信?
Win服务暂停或停止时,继续任务的最佳方式是什么?
Kernel32.dll中的Createfile不允许我打开物理磁盘
.NET Systeminformation.PrimaryMonitorMaximizedwindowsize显示大于PrimaryMonitorSize
如何在Visual Studio 2010中设置环境variables?
不,你不能合并它们。 您必须通过添加适当的菜单项并在Click事件处理程序方法中编写必要的代码来自己复制功能。
常用控件默认提供该菜单。 如果你想覆盖它,你可以这样做,但没有内置的规定来将你的自定义项目与内置菜单相结合 。 有些人利用这一点作为一个功能 ,分配一个空的ContextMenu或ContextMenuStrip控制,以防止标准菜单被显示(谈论混乱的UI设计!)。
特别是对于TextBox控件,我强烈建议您保留默认的上下文菜单,而不是试图重新创建它。 有很多选项可以用于IME等非常难以自行获取的内容。 如果您将应用程序定位到公众,他们将非常感谢您的应用程序中存在预期的这种功能。
最好把你的定制功能完全放在别的地方。 右键单击一个常用控件,并期望看到自定义选项列表是非常不直观的。 正是出于这个原因,大多数其他应用程序不能这样工作。
如果,尽管我有相反的建议,但是您坚持让这个工作起作用,那么您可以利用内置上下文菜单只是一个标准的Win32d出式菜单的知识控件,并且当d出菜单即将变为活动状态时,该控件将向其父母发送WM_INITMENUPOPUP消息 。
有了这些知识,你可以决定从windows API中调用一些函数并修改该上下文菜单。 特别是AppendMenu或SetMenuIteminfo函数。
但是,然后,一个惊喜将等待着你。 事实证明,本机编辑控件( TextBox是代表) 不会发送WM_INITMENUPOPUP消息 ! 我不确定TreeVIEw控件, DataGrIDVIEw控件不会执行任何 *** 作 ,因为它是为WinForms编写的自定义类。 它不是基于任何本地的Win32控件,所以它不会发送任何这样的消息,你可以处理。
总结以上是内存溢出为你收集整理的WinForm:与VS2010中的现有菜单合并ContextMenuStrip MenuItem全部内容,希望文章能够帮你解决WinForm:与VS2010中的现有菜单合并ContextMenuStrip MenuItem所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)