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

Gali
sumber

Jawaban:

341

Tetapkan ActiveControlproperti formulir dan Anda harus baik-baik saja.

this.ActiveControl = yourtextboxname;
V4Vendetta
sumber
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

Spacemancraig
sumber
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 .

Neil Knight
sumber
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();
    }
DavidG
sumber
12

Jika Anda hanya ingin mengatur fokus saat pertama kali formulir ditampilkan, cobalah menangani acara Form.Shown dan melakukannya di sana. Kalau tidak gunakan Control.VisibleChanged .

Andy Johnson
sumber
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().

GRC
sumber
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();
        }
    }
}
Ben
sumber
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.

Mehmet Taha Meral
sumber
3

gunakan formulir yang ditunjukkan acara dan set

MyTextBox.Focus();
Nitin ...
sumber
3

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

YourTextboxName.Focus();

Itu akan berhasil.

Shakaib Akhtar
sumber
2

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

pengguna9248597
sumber
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.

Aparna Ratheesh
sumber
1

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

Mustafa
sumber
0

itu berfungsi untuk saya atur tabindex ke 0 this.yourtextbox.TabIndex = 0;

Muhafil Saiyed
sumber
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();
    }
MarkLee
sumber
-5

Dalam fokus set jquery

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

atau dalam Javascript bisa Anda lakukan

window.onload = function() {
  document.getElementById("txtBox1").focus();
};
Sudip Bhattacharya
sumber
4
Ini mungkin jawaban yang bagus untuk pertanyaan situs web, tetapi yang ini ditandai c#dan winforms.
Ben Voigt