【问题标题】:Winforms: TreeView focus stolen by TextBoxWinforms:TextBox 窃取了 TreeView 焦点
【发布时间】:2014-01-08 13:23:01
【问题描述】:

有以下场景:

  • TabControlForm 上有两页
  • 每个标签页都包含TreeView组件
  • 标签页Enter事件:
    • 用生成的节点填充TreeView
    • 选择要突出显示的所需节点 (tree.SelectedNode = desiredNode)
    • 激活TreeView 以接收焦点,从而以不同颜色显示所选节点 (tree.Select())
  • 两个选项卡之间有一点区别:
    • 除了TreeView(和按钮)之外,还有TextBox 控件放在第二个控件上。

问题:
带有TextBox 的页面将焦点设置为TextBox,似乎没有办法关注TreeView。使用的方法(及其组合):

  • tree.Select()
  • tree.Focus()
  • form.ActiveControl = tree

单击TreeView 的空闲区域(避免单击任何节点)完成工作并突出显示所选节点。与按 TAB 键以 Tab 键顺序循环控件直到到达 TreeView 的情况相同。

问题:
有没有办法让TreeView 聚焦而不是让TextBox 在标签被Entered 后窃取焦点?

【问题讨论】:

  • 你忘了检查TabIndex

标签: c# winforms textbox treeview


【解决方案1】:

是的,就像 Sinatr 所说,您可以使用带有文本框的选项卡上的 TabIndex 来设置控件的正确顺序。

【讨论】:

  • 嗯,没看懂,但试过了,观察结果(你可能想分享)如下:在 Enter 事件后激活了具有最小 TabOrder 的控件。问题是,TextBox 的 TabOrder 应该较低,因为它在 TreeView 上方 :o( 我还漏掉了什么吗?
  • 一个选项卡或窗口窗体中的控件顺序由它们的放置顺序设置。可能是您先放置 TreeView,然后将文本框添加到屏幕。在 Visual Studio 中有一个 TabOrder 的图标,你可以在那里查看吗?
  • 是的,现在很清楚了:TreeView 必须具有最低的 TabIndex。无论是手动设置还是通过 Tab Order 按钮“向导”设置都没有关系。问题是,如果所需的选项卡顺序与聚焦 TreeView 所需的选项卡顺序不同(这是我现在的情况)。无论 TabIndex 是什么,我都希望可以选择聚焦 TreeView...无论如何,谢谢您的提示。
猜你喜欢
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多