web-dev-qa-db-ja.com

Windows Formsアプリケーションでコントロールにフォーカスを設定する方法は?

Windows Formsアプリケーションで、whenアプリケーションの起動中と関数の呼び出し後の両方にフォーカスをコントロールに設定するコードを記述しますか?

たとえば、DropDownList、TextBox、および4つのボタンがあり、フォーカスをDropDownListに設定する場合、whereコードを記述しますか?

アプリケーションの起動時に特定のコントロールにフォーカスを設定するには、タブインデックスをそのDropDownに設定します(TabStopプロパティがTrueに設定されていることを前提に、最小値を設定します)。

ここで、ユーザーが操作(たとえば、クリックボタンイベント)を完了してから、DropDownを更新し、その後フォーカスを設定する場合は...として実行できます

MyDropDownList.Focus()

[〜#〜] question [〜#〜]

注意:問題は、morewhereではなく、how

27
Kanini

最も簡単な解決策は、TabIndexプロパティを正しく設定して、 'MyDropDownList'コントロールのインデックスが最も低くなるようにすることです。次のアプローチは、コンストラクターで行うことです。ただし、Select()を使用する必要があります。コントロールは後で表示されるため、Focus()メソッドはまだ機能しません。

Public Sub New()
    InitializeComponent()
    MyDropDownList.Select()
End Sub

Loadイベントでも機能します。 Focus()はShownイベントで動作を開始します。

59
Hans Passant

親ウィンドウがアクティブ化されたとき(つまり、 "Activated"イベントを受け取ったとき)、フォーカスを配置する子コントロールにフォーカスを設定します。

private void Form_AddAppID_Activated(object sender, EventArgs e)
{
    textID.Focus();
}

タブ順序は、フォーカスの開始位置とは関係がないことに注意してください。代わりに、タブオーダーを使用して、ユーザーがタブキーを押したときにフォーカスがどのように転送されるかを決定します。

0
Paul Yao