web-dev-qa-db-ja.com

テキストボックスコントロールにフォーカスを設定する

フォームを最初に開いたときにテキストボックスにフォーカスを設定する場合は、デザイン時にtabOrderプロパティを0に設定し、他のフォームコントロールのtabOrderが0になっていないことを確認します。

コードを使用して実行時に同じ結果を達成したい場合、どうすればよいですか?
tabOrderの使用に代わるものはありますか?
実行時コードはフォームのコンストラクターまたはそのonloadイベントハンドラーにあると思いますか?


[〜#〜] edit [〜#〜]
つまり、手動でタブを移動したり、手動で選択したりすることなく、フォームが表示されたらすぐにテキストボックスに直接入力できるようにしたいと思います。

10
whytheq

フォームのロード時に設定するため、.Focus()メソッドを呼び出す前に、まずフォームを.Show()する必要があります。フォームを表示するまで、フォームはLoadイベントでフォーカスを取得できません。

Private Sub RibbonForm1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Me.Show()
    TextBox1.Select()
End Sub
32
Robert Beaubien

あなたが探しているのは次のとおりだと思います:

textBox1.Select();

コンストラクター内。 (これはC#にあります。多分VBこれは同じですが、セミコロンなしです。)

http://msdn.Microsoft.com/en-us/library/system.windows.forms.control.focus.aspx から:

フォーカスは、主にカスタムコントロールの作成者を対象とした低レベルのメソッドです。代わりに、アプリケーションプログラマはSelectメソッドまたは子コントロールのActiveControlプロパティ、またはフォームのActivateメソッドを使用する必要があります。

12
ispiro
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    TextBox1.Select()
End Sub
9
dbasnett

フォーカス方式を使用する

  Private Sub frmTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       yourControl.Focus()
    End Sub
4
Bogdan M.

非常に簡単:

タブコントロールの場合、_ SelectedIndexChangedイベントを処理する必要があります。

Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As System.EventArgs) _
  Handles TabControl1.SelectedIndexChanged

If TabControl1.SelectedTab.Name = "TabPage1" Then
    TextBox2.Focus()
End If
If TabControl1.SelectedTab.Name = "TabPage2" Then
    TextBox4.Focus()
End If
2
Anil

フォーカスを設定するには、

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    TextBox1.Focus()
End Sub

TabIndexを設定する

Me.TextBox1.TabIndex = 0
1

テキストボックスを作成します:

 <TextBox Name="tb">
 ..hello..
</TextBox>

focus()--->テキストボックスコントロールに入力フォーカスを設定するために使用されます

tb.focus()
0
Laxmi