4

Visual Studio フォーム デザイナーで複雑なフォームのコントロールのタブ オーダーを簡単に変更する方法はありますか。

タブ オーダー モードを選択すると、すべてのコントロールがタブ インデックスと共に表示されることはわかっていますが、複雑なフォームの途中で新しいコントロールを追加して、フォーム上のすべてのコントロールを再度選択し直す必要があるのは非常に面倒です。新しいタブ オーダーを設定します。誤ってコントロールを見逃してしまい、最初からやり直さなければならないことがよくあります。

MSDN で、少なくとも新しいコントロールの並べ替えを開始したい場所の前のコントロールを Ctrl キーを押しながらクリックし、その後各コントロールをクリックして新しいタブ オーダーを設定できるはずだと読みましたが、できませんそれを機能させます。前のコントロールを Ctrl キーを押しながらクリックすると、そのコントロールがタブ インデックス 0 に設定され、それがフォーム全体の新しい最初のコントロールになります。

私は Delphi のバックグラウンドから来ており、Delphi でコントロールのタブ オーダーを編集すると、フォーム上のすべてのコントロールのリストを示すダイアログが表示され、リストからコントロールを選択してリストの上または下に移動できます。タブ オーダーを交換したり、フォームの途中に新しいコントロールを追加するなどの単純な変更は、はるかに簡単です。おそらく私は何かを見逃していますが、これは簡単に行うことができます。Visual Studio で利用できない場合は、デルフィの機能を模倣するアドインがあります。

よろしくブライアン

4

3 に答える 3

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コントロールは、タブの順序で並べられています。タブオーダーを希望する場所に対応する行を移動するだけです。最初の2行を入れ替えるだけで、タブオーダー1の[キャンセル]ボタンになります。

于 2012-02-24T16:09:02.600 に答える
3

新しいコントロールを追加して、使用するタブ オーダー値を指定すると、Visual Studio によって残りが自動的に置き換えられます。両方のコントロールのタブ オーダーは同じですが、機能します。

于 2011-10-11T00:51:46.537 に答える
0

フォームの再配置はオプションではないことを示しているので、CodeProject: Automatic Runtime Tab Order Management for Windows Formsの古い忠実なものを使用することを検討してください。少し時代遅れです (たとえば、強い型付けされたジェネリック コレクションはありません) が、かなりうまく機能します。

TabOrderManager.csプロジェクトからは、それ自体でコンパイルできます。コンパニオンとテスト プロジェクトのすべての道具は必要ありませんIExtenderProvider

フォームを変更する必要がある場合は、新しいコントロールを追加して、以下InitializeComponent();のような呼び出しを追加できます

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

それがあなたに合っていることを願っています。

于 2011-10-11T21:06:54.950 に答える