フォームが読み込まれたときにTextBoxにフォーカスを置く方法は?


156

C#プログラムのtextBoxにあります

プログラムの起動時にフォーカスがテキストボックスにあることが必要です

私はForm_Loadでこれを試します:

MyTextBox.Focus();

しかし、それはうまくいきません

回答:


341

ActiveControlフォームのプロパティを設定すると、問題ないはずです。

this.ActiveControl = yourtextboxname;

1
私はこれを試しましたComboBox。しかし、それも機能しません!
Alex Jolig 2015

1
これは他のすべてがしなかった私のために働いてくれてありがとう。Tab Index = 0が機能しない理由はわかりませんが、フォーム/ダイアログの読み込み中に、操作の順序が変わっている可能性があります。
David Carrigan、2015

1
これを試してください>>> this.ActiveControl = yourtextboxname.Control;
Polamin Singhasuwich、2016

3
これはうまく機能しますが、なぜ機能しなかったのですか?MyTextBox.Focus();プログラムが実行されると、それはうまく機能するようです。
Levon

2
書き込みthis.ActiveControl = textBox1;誰もが「textBox1テキストボックス」の意味を理解しています。「youttextboxname」は次のように聞こえます... = "MyTextBox";
Bitterblue

25

タブ順序を確認し、テキストボックスがゼロに設定されていることを確認してください


ワーキング。または、単にtabindexをフォームの最初のカーソル「フォーカス可能」要素にします。
apincik

15

あなたは試すことができます:

MyTextBox.Select();

ドキュメントによると:

コントロールのSelectableスタイルビットがControlStylesでtrueに設定されていて、別のコントロールに含まれていて、そのすべての親コントロールが表示および有効になっている場合、Selectメソッドはコントロールをアクティブにします。

MyTextBox.CanSelectプロパティを調べて、コントロールが選択可能かどうかを最初に確認できます。


15

レンダリングされていないコントロールにフォーカスを設定することはできません。Form.Load()は、コントロールがレンダリングされる前に発生します。

フォームのイベントに移動し、「Shown」イベントをダブルクリックします。フォームの表示されたイベントハンドラーで、control.Focus()メソッドを呼び出します。

    private void myForm_Shown(object sender, EventArgs e)
    {
        // Call textbox's focus method
        txtMyTextbox.Focus();
    }


6

Textbox.Focus()「Tries」は、テキストボックス要素にフォーカスを設定します。たとえば、要素の可視性が非表示の場合、Focus()は機能しません。したがって、を呼び出す前に、要素が表示されていることを確認してくださいFocus()


5

これが機能しないのLoadは、フォームが描画またはレンダリングされる前にイベントが呼び出されるためです。

それは、ピザの場所にピザの作り方を伝え、ピザを作る前にペパロニの量を写真で送ってくれるように依頼するようなものです。

using System;
using System.Windows.Forms;

namespace Testing
{
    public partial class TestForm : Form
    {
        public TestForm()
        {
            InitializeComponent();

            Load += TestForm_Load;

            VisibleChanged += TestForm_VisibleChanged;

            Shown += TestForm_Shown;

            Show();

        }

        private void TestForm_Load(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called before the form is rendered.");
        }

        private void TestForm_VisibleChanged(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called before the form is rendered.");
        }

        private void TestForm_Shown(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called after the form is rendered.");
            txtFirstName.Focus();
        }
    }
}

4

TextBoxの "TabIndex"プロパティの変更に関する問題を解決しました。プログラムの起動時にフォームにフォーカスするTextBoxに0を設定します。



3

タブインデックスプロパティの値を0に設定し、フォームロード関数で次のように書き込みます。

YourTextboxName.Focus();

それが動作します。


2

textBox1.select();またはテキストボックス設定でTabIndexを使用できます。TabIndex=0最初にfocoused。


textBox1.select();を呼び出すと フォームロードイベントハンドラーでは、textBox1にフォーカスを設定します。
Tushar R.

1

TabstopをTrueに、TabIndexをフォーカスが必要なコントロールの最小値に設定します。

たとえば、TextBoxが2つある場合:TextBox1とTextBox2の場合、Tabstopを両方にTrueに、TabIndexをそれぞれ0と1に設定します。フォームが読み込まれると、フォーカスはTextBox1になり、 'Tab'キーを押すとフォーカスがTextBox2に移動します。


1

フォームで、プロパティに移動し、 "TopMost"プロパティがtrueに設定されていることを確認します。これで問題が解決します。



0

最後に、私はMetroフレームワークを使用していた問題を発見し、すべてのソリューションがmetroTextBoxで機能せず、すべてのソリューションがload、show、visibility_change、eventsの通常のtextBoxで機能し、タブインデックス= 0でも有効です。

   // private void Form1_VisibleChanged(object sender, EventArgs e)
   // private void Form1__Shown(object sender, EventArgs e)
    private void Form1_Load(object sender, EventArgs e)
    {

        textBox1.Select();
        this.ActiveControl=textBox1;
        textBox1.Focus();
    }

-5

jqueryでフォーカスを設定

$(function() {
  $("#txtBox1").focus();
});

またはJavascriptで行うことができます

window.onload = function() {
  document.getElementById("txtBox1").focus();
};

4
これはウェブサイトの質問には良い答えかもしれませんが、タグが付けられc#ていwinformsます。
Ben Voigt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.