TabIndex 无法正常工作的可能原因是什么

问题描述 投票:0回答:5

所以我从 0 开始并为表单上的控件定义 tabindex,但在运行时一切都搞砸了。形式有点复杂。它有水平和垂直的分割器和面板、组框和一些旧的 VB 6.0 activeX 控件,它们内部是一个树控件。即使我以编程方式执行此操作并读取previewkeydown eventg并说如果它是TAB然后control2.Focus()它仍然工作错误。太令人沮丧了。有什么想法吗? ..表单上还有不需要制表符的标签,因此我为其索引定义了 0。

c# winforms
5个回答
27
投票

你是如何设置的? 如果您在 Visual Studio 中使用设计视图中的表单,请选择“视图”->“选项卡顺序”,然后按照您想要的顺序单击每个项目。

通常对我有用。


16
投票

原因是控件位于不同的Container中。假设你有 panel1.TabIndex = 0 和 panel2.TabIndex = 1,然后在 panel2 中,textBox1.TabIndex = 0,在 panel1 中,textBox2.TabIndex = 1。在运行时,textBox1 出现在 textBox2 之前,因为它的面板先出现!

正如 kerry 所说,使用 view->tab order 来查看 tab order 的完整层次结构。


3
投票

我提到这一点是因为我在 stackoverflow 上找到的任何 winforms tab order 线程中都没有看到它。

如果您有多个面板,您可以通过单击面板、转到属性来更改面板选项卡顺序,然后将 TabIndex 更改为您想要的任何内容。这将允许您按照所需的顺序从一个面板导航到另一个面板。然后在每个面板中,使用“视图”>“选项卡顺序”按照上面列出的建议步骤进行操作,并按照您要设置的顺序单击每个单元格。


0
投票

请按照以下步骤操作:

  1. 使用 View > TabOrder 实用程序或直接从属性窗口将
    TabIndex
    属性设置为表单或容器中的 DIRECT CHILD 容器和控件。完全忽略容器的
    TabStop
    属性,尽管它非常重要,但默认为 false。
  2. 对每个容器重复步骤 1。

0
投票

在 VS 2022 版本 17.9.6 中没有“查看/选项卡顺序”菜单项。必须为每个控件设置 tabIndex ???

© www.soinside.com 2019 - 2024. All rights reserved.