bagaimana cara menempatkan fokus pada TextBox ketika form memuat?


156

Saya miliki di textBox program C # saya

Saya membutuhkannya ketika program dimulai, fokusnya akan berada di kotak teks

Saya mencoba ini di Form_Load:

MyTextBox.Focus();

tapi itu tidak akan berhasil

Jawaban:


341

Tetapkan ActiveControlproperti formulir dan Anda harus baik-baik saja.

this.ActiveControl = yourtextboxname;

1
Saya mencoba ini ComboBox. Tapi itu juga tidak berhasil!
Alex Jolig

1
Terima kasih ini bekerja untuk saya di mana yang lainnya tidak. Tidak yakin mengapa Indeks Tab = 0 tidak akan berfungsi, tetapi mungkin ada urutan operasi aneh yang terjadi saat memuat dialog bentuk / tampilan.
David Carrigan

1
COBALAH INI >>> this.ActiveControl = yourtextboxname.Control;
Polamin Singhasuwich

3
Ini bekerja dengan baik, tetapi mengapa tidak MyTextBox.Focus();berhasil - yang tampaknya berfungsi dengan baik setelah program berjalan.
Levon

2
Tulis this.ActiveControl = textBox1;Semua Orang mengerti arti "textBox1". "youttextboxname" terdengar seperti... = "MyTextBox";
Bitterblue

25

periksa urutan tab Anda dan pastikan kotak teks diatur ke nol


Kerja. Atau cukup tabindex untuk menjadi elemen "fokus" kursor pertama dalam formulir.
apincik

15

Kamu bisa mencoba:

MyTextBox.Select ();

Menurut dokumentasi:

Metode Pilih mengaktifkan kontrol jika bit gaya Dipilih kontrol diatur ke true di ControlStyles, itu terkandung dalam kontrol lain, dan semua kontrol induknya terlihat dan diaktifkan.

Pertama-tama Anda dapat memeriksa apakah kontrol dapat dipilih dengan memeriksa properti MyTextBox.CanSelect .


15

Anda tidak dapat mengatur fokus ke kontrol jika belum diberikan. Form.Load () terjadi sebelum kontrol diberikan.

Pergi ke acara formulir dan klik dua kali acara "Tampil". Dalam event handler yang ditampilkan, panggil metode control.Focus ().

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


6

Textbox.Focus()"Mencoba" untuk mengatur fokus pada elemen kotak teks. Dalam kasus visibilitas elemen disembunyikan misalnya, Focus()tidak akan berfungsi. Jadi pastikan elemen Anda terlihat sebelum memanggil Focus().


5

Alasan Anda tidak dapat mengaktifkannya adalah karena Loadacara tersebut dipanggil sebelum formulir ditarik atau diberikan.

Ini seperti memberi tahu tempat pizza cara membuat pizza Anda, dan kemudian meminta mereka untuk mengirimi Anda gambar berapa banyak pepperoni dalam pizza Anda sebelum mereka membuatnya.

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

Saya memecahkan masalah saya dengan mengubah properti "TabIndex" dari TextBox. Saya menetapkan 0 untuk TextBox yang ingin saya fokuskan pada Formulir ketika program dimulai.


3

gunakan formulir yang ditunjukkan acara dan set

MyTextBox.Focus();

3

Tetapkan nilai properti Tab Index = 0 dan kemudian dalam bentuk fungsi memuat menulis:

YourTextboxName.Focus();

Itu akan berhasil.


2

Anda dapat menggunakan salah satu textBox1.select();atau TabIndex dalam pengaturan kotak teks. TabIndex=0fokus pertama.


Jika kita memanggil textBox1.select (); di form load event handler, ia menetapkan fokus di textBox1.
Tushar R.

1

Set Tabstop ke True dan TabIndex ke minimum ke kontrol yang Anda butuhkan fokus.

mis. Jika Anda memiliki 2 TextBoxes: TextBox1 dan TextBox2, atur Tabstop ke True untuk keduanya dan TabIndex menjadi 0 dan 1 masing-masing. Saat formulir dimuat, fokus akan berada di TextBox1 dan pada penekanan tombol 'Tab', fokus akan pindah ke TextBox2.


1

di formulir Anda, buka properti dan pastikan bahwa properti "TopMost" disetel ke true, yang akan menyelesaikan masalah Anda.



0

Akhirnya saya menemukan masalah saya menggunakan kerangka metro dan semua solusi Anda tidak akan bekerja dengan metroTextBox, dan semua solusi Anda akan bekerja dengan textBox normal dalam memuat, menunjukkan, visibility_change, peristiwa, bahkan indeks tab = 0 valid.

   // 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

Dalam fokus set jquery

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

atau dalam Javascript bisa Anda lakukan

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

4
Ini mungkin jawaban yang bagus untuk pertanyaan situs web, tetapi yang ini ditandai c#dan winforms.
Ben Voigt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.