2011-10-10 90 views
4

是否有一種更改Visual Studio窗體設計器中複雜表單上控件的Tab順序的簡單方法。Visual Studio 2010中的控件選項卡順序

我知道,我可以選擇tab順序模式,它顯示了我的一切與他們的標籤指數的控制,但它是這樣一個痛苦的複雜形式的中間增加一個新的控制,並有重新選擇的每個控件在窗體上再次設置新的標籤順序。我經常發現我無意中錯過了一個控制,所以必須重新做一遍。

我在MSDN上讀到它應該至少可以按Ctrl-點擊我想要開始新控件重新排序的控件,然後點擊每個控件之後設置新的Tab鍵順序,但是我無法讓它工作。 Ctrl-點擊前一個控件只需將其中一個設置爲Tab索引0,從而成爲整個表單上新的第一個控件。

我來自delphi背景,在delphi編輯控件標籤順序時,您會看到一個對話框,顯示窗體上所有控件的列表,並且您可以從列表中選擇一個控件並在列表中向上或向下移動它。更簡單的更改就像交換Tab鍵順序或將新控件添加到表單中間一樣簡單。 也許我錯過了一些東西,而且可以輕鬆做到這一點。如果在Visual Studio中不可用,那麼會添加一個模仿delphi功能的插件。

問候 布賴恩

+0

您是否可以創建用戶控件作爲表單的較大組件,易於安排? –

+1

用Panels,GroupBoxes和UserControls分區複雜的佈局。對用戶很好,在編輯時很好,在Tab Order視圖中很好。 –

+0

是的,這可能是更好的方法,但不幸的是,這是一個很大的項目,我已經參與了很多沒有分組優勢的表單。很多工作要改變所有這些。 –

回答

3

如果添加一個新的控制,並給它時所使用的標籤訂單價值,Visual Studio將自動替換休息。兩個控件都將具有相同的Tab鍵順序,但它會起作用。

+0

試過了,我認爲這可能是更容易做的事情現在。我對使用相同Tab鍵順序的兩個控件的衝突有點擔心,但它似乎工作正常。謝謝。 –

+0

我很高興我幫助你。如果需要任何其他幫助,請讓我知道。 –

+2

我剛剛遇到了這個問題,Visual Studio 2010不會重新編號。我知道MS以破壞工作而聞名,但這是一個新的低谷 - 從VB2開始一直工作,現在我們不能再依賴它了。 :-( – qwerty13579

0

正如你所指出的,重新排列表單不是一種選擇,你可以考慮使用來自CodeProject的老忠實人:Automatic Runtime Tab Order Management for Windows Forms。這有點過時(例如沒有強類型的通用集合),但它工作得很好。

TabOrderManager.cs從項目可以自行編譯,你(我)不需要同伴IExtenderProvider和測試項目的所有用具。

如果表單需要改變只需要添加新的控件及以下InitializeComponent();添加一個調用,比如

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

希望它適合你。

+0

感謝這個鏈接,我會根據自己的需要來看看這個選項以獲得更長期的解決方案。現在,針對我的直接需求的最佳解決方案就是在我的新控件上手動設置標籤索引。 –

3

最簡單的方法來改變你的Tab鍵順序,如果你有太多的控制,只要打開你的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的位置即可。只需將前兩行換行,它將作爲製表符順序1的取消按鈕。

+0

我想知道爲什麼微軟不會簡單地在控件的屬性頁面中顯示控件的行索引...... – mrt

相關問題