嵌套选项卡控件上的快捷键问题[英] Shortcut key issue on nested tab control

本文是小编为大家收集整理的关于嵌套选项卡控件上的快捷键问题的处理方法,想解了嵌套选项卡控件上的快捷键问题的问题怎么解决?嵌套选项卡控件上的快捷键问题问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个带有选项卡控件的 Windows 窗体.它有两个选项卡页,A 和 B.选项卡 A 包含另一个选项卡控件.用户动态地将选项卡添加到此选项卡控件,因此可以有 1 到 N 个选项卡.这些选项卡包含一个丰富的文本框,在添加选项卡页时会为其分配一个上下文菜单.这是我用来添加新标签页的代码:

strTabName = "SQL Tab " &tcOnTabPageA.TabPages.CountDim tpNew As New TabPage(strTabName)tpNew.Controls.Add(新建 RichTextBox)tpNew.Padding =  Padding(3)tpNew.BackColor = Color.FromKnownColor(KnownColor.Control)tpNew.ContextMenuStrip = mnuForTabsDim rtxt As RichTextBox = CType(tpNew.Controls(0), RichTextBox)rtxt.Dock = DockStyle.Fillrtxt.Font = gblFontrtxt.BorderStyle = BorderStyle.FixedSinglertxt.ContextMenuStrip = mnuForTextrtxt.DetectUrls = Falsertxt.AcceptsTab = True'在再次添加之前删除处理程序,以确保事件只会运行一次RemoveHandler rtxt.TextChanged, AddressOf richtextbox_TextChangedRemoveHandler rtxt.KeyDown, AddressOf FieldName_KeyDown'将处理程序连接到正确的方法AddHandler rtxt.TextChanged, AddressOf richtextbox_TextChangedAddHandler rtxt.KeyDown, AddressOf FieldName_KeyDown'在最后创建一个新标签页tcOnTabPageA.TabPages.Insert(tcOnTabPageA.TabPages.Count - 1, tpNew)


选项卡 B 上只有一个富文本框.导致问题的场景是这样的:用户在选项卡 A 上并在任何嵌套选项卡 1-N 上键入富文本框.他们导航到选项卡 B 并在那里输入富文本框.他们导航回选项卡 A.此时 ContextMenuItem 快捷键不再适用于嵌套选项卡 1-N 上的richtextbox(您可以在上面的代码中看到这是 mnuForText).我可以看到richtextbox 的 ContextMenuStrip 设置正确,并且菜单项的快捷键设置正确,但它不会触发 MenuItem_Click 事件.如果我在文本框中单击鼠标右键,则会出现正确的 ContextMenuStrip,并且从那时起,快捷键在 Richtextbox 中再次正常工作,直到用户再次导航到选项卡 B.是否有人对导致 ContextMenu 无法正常触发的原因有任何想法?或者对接下来尝试调试什么来解决这个问题有什么建议?

推荐答案

我一年多前发布了这个问题,我终于弄清楚了这个问题是什么.它根本与嵌套的选项卡控件无关.我在上下文菜单的打开事件中有一些代码,它根据当前是否选择文本来设置是否启用/禁用相关菜单项.好吧,由于这只在菜单的打开事件中触发,所以当您第一次关注文本框并使用快捷键时,默认情况下该项目被禁用,这就是它不起作用的原因.然后,当我右键单击以获取菜单时,它会重置为启用并在其余时间工作.

所以我的解决方案是始终启用此选项,并且在未选择文本时不执行操作.

本文地址:https://www.itbaoku.cn/post/1356099.html