4

是否有一种简单的方法可以在 Visual Studio 表单设计器中更改复杂表单上控件的 Tab 键顺序。

我知道我可以选择 Tab Order 模式,它会向我显示所有控件及其选项卡索引,但是在复杂表单的中间添加新控件并且必须重新选择表单上的每个控件非常痛苦设置新的标签顺序。我经常发现我不小心错过了一个控制,所以必须从头再来。

我在 MSDN 上读到,至少应该可以在我想要开始新控件重新排序之前的控件上按 Ctrl 键单击,然后在此之后单击每个控件以设置新的选项卡顺序,但我不能让它发挥作用。Ctrl-单击前一个控件只会将该控件设置为 Tab Index 0,这样就成为整个表单上新的第一个控件。

我来自 delphi 背景,在 delphi 中编辑控件选项卡顺序时,您会看到一个对话框,显示表单上所有控件的列表,您可以从列表中选择一个控件并将其在列表中向上或向下移动。对于简单的更改(例如交换 Tab 键顺序或在表单中间添加新控件)要容易得多。也许我错过了一些东西,并且可以轻松地做到这一点。如果在 Visual Studio 中不可用,是否有一个模仿 delphi 功能的插件。

问候布赖恩

4

3 回答 3

3

如果您添加一个新控件并为其指定一个使用的 Tab 键顺序值,Visual Studio 将自动替换其余部分。这两个控件将具有相同的 Tab 键顺序,但它会起作用。

于 2011-10-11T00:51:46.537 回答
3

如果您有太多控制权,更改标签顺序的最简单方法是,只需PROJECT.RC以文本模式打开文件并找到配置对话框的位置......例如:

IDD_MESSAGE_LIST DIALOG 0, 0, 197, 162
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Message List"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,85,140,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,140,140,50,14
    CONTROL         "List1",IDC_MESSAGE_LIST,"SysListView32",WS_BORDER | WS_GROUP,5,5,165,120
    CONTROL         "",IDC_LINE,"Static",SS_ETCHEDHORZ,5,130,190,1
    CONTROL         "",IDC_CHECK_ALL,"Static",SS_BLACKFRAME | NOT WS_VISIBLE,175,5,5,5
    CONTROL         "Tree1",IDC_MESSAGE_TREE,"SysTreeView32",TVS_HASBUTTONS | WS_BORDER 
END

之间BEGINEND您的控件按其 TAB ORDER 排序。只需移动与您想要 TAB ORDER 的位置相对应的行。只需交换前两行,它将是取消按钮作为标签顺序 1。

于 2012-02-24T16:09:02.600 回答
0

正如您指出的那样,重新排列表单不是一个选项,您可以考虑使用 CodeProject 中的一个老忠实用户:Windows 表单的自动运行时制表符顺序管理。它有点过时了(例如没有强类型的泛型集合),但它工作得很好。

TabOrderManager.cs项目可以自己编译,你(我)不需要同伴IExtenderProvider和测试项目的所有工具。

如果表单需要更改,您可以添加新控件,然后在下面InitializeComponent();添加一个调用,例如

new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.DownFirst);

希望它适合你。

于 2011-10-11T21:06:54.950 回答