フォームを最初に開いたときにテキストボックスにフォーカスを設定する場合は、デザイン時にtabOrderプロパティを0に設定し、他のフォームコントロールのtabOrderが0になっていないことを確認します。
コードを使用して実行時に同じ結果を達成したい場合、どうすればよいですか?
tabOrderの使用に代わるものはありますか?
実行時コードはフォームのコンストラクターまたはそのonloadイベントハンドラーにあると思いますか?
[〜#〜] edit [〜#〜]
つまり、手動でタブを移動したり、手動で選択したりすることなく、フォームが表示されたらすぐにテキストボックスに直接入力できるようにしたいと思います。
フォームのロード時に設定するため、.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
あなたが探しているのは次のとおりだと思います:
textBox1.Select();
コンストラクター内。 (これはC#にあります。多分VBこれは同じですが、セミコロンなしです。)
http://msdn.Microsoft.com/en-us/library/system.windows.forms.control.focus.aspx から:
フォーカスは、主にカスタムコントロールの作成者を対象とした低レベルのメソッドです。代わりに、アプリケーションプログラマはSelectメソッドまたは子コントロールのActiveControlプロパティ、またはフォームのActivateメソッドを使用する必要があります。
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
TextBox1.Select()
End Sub
フォーカス方式を使用する
Private Sub frmTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
yourControl.Focus()
End Sub
非常に簡単:
タブコントロールの場合、_ 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
フォーカスを設定するには、
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
TextBox1.Focus()
End Sub
TabIndexを設定する
Me.TextBox1.TabIndex = 0
テキストボックスを作成します:
<TextBox Name="tb">
..hello..
</TextBox>
focus()--->テキストボックスコントロールに入力フォーカスを設定するために使用されます
tb.focus()