jak ustawić fokus na TextBox podczas ładowania formularza?

156

Mam w moim programie C # textBox

Potrzebuję tego po uruchomieniu programu, fokus będzie znajdował się na polu tekstowym

Próbuję tego na Form_Load:

MyTextBox.Focus();

ale to nie zadziała

Gali
źródło

Odpowiedzi:

341

Ustaw ActiveControlwłaściwość formularza i powinno być dobrze.

this.ActiveControl = yourtextboxname;
V4Vendetta
źródło
1
Próbowałem tego dla ComboBox. Ale to też nie działa!
Alex Jolig,
1
Dzięki, że zadziałało dla mnie tam, gdzie wszystko inne nie. Nie jestem pewien, dlaczego Tab Index = 0 nie działa, ale prawdopodobnie podczas ładowania formularza / wyświetlania okna dialogowego zachodzi dziwna kolejność operacji.
David Carrigan,
1
WYPRÓBUJ TO >>> this.ActiveControl = yourtextboxname.Control;
Polamin Singhasuwich
3
Działa świetnie, ale dlaczego nie MyTextBox.Focus();zadziałało - wydaje się, że działa dobrze, gdy program jest uruchomiony.
Levon,
2
Napisz this.ActiveControl = textBox1;Każdy rozumie znaczenie „textBox1”. „youttextboxname” brzmi jak... = "MyTextBox";
Bitterblue
25

sprawdź kolejność tabulatorów i upewnij się, że pole tekstowe jest ustawione na zero

Spacemancraig
źródło
Pracujący. Lub po prostu tabindex, aby był pierwszym elementem formularza, na którym można ustawić fokus.
apincik
15

Możesz spróbować:

MyTextBox.Select ();

Zgodnie z dokumentacją:

Metoda Select aktywuje formant, jeśli bit wybieralnego stylu kontrolki jest ustawiony na true w ControlStyles, znajduje się w innej kontrolce, a wszystkie jej kontrolki nadrzędne są widoczne i włączone.

Możesz najpierw sprawdzić, czy formant można wybrać, sprawdzając właściwość MyTextBox.CanSelect .

Neil Knight
źródło
15

Nie można ustawić fokusu na kontrolkę, jeśli nie została wyrenderowana. Form.Load () występuje przed renderowaniem kontrolek.

Przejdź do wydarzeń formularza i kliknij dwukrotnie wydarzenie „Wyświetlane”. W module obsługi zdarzeń wyświetlonym w formularzu wywołaj metodę control.Focus ().

    private void myForm_Shown(object sender, EventArgs e)
    {
        // Call textbox's focus method
        txtMyTextbox.Focus();
    }
DavidG
źródło
6

Textbox.Focus()„Próbuje”, aby ustawić fokus na elemencie pola tekstowego. W przypadku np. Ukrycia elementu widoczność Focus()nie zadziała. Dlatego przed wywołaniem upewnij się, że Twój element jest widoczny Focus().

GRC
źródło
5

Powodem, dla którego nie możesz go uruchomić, jest to, że Loadzdarzenie jest wywoływane przed narysowaniem lub renderowaniem formularza.

To tak, jakby powiedzieć pizzerii, jak zrobić pizzę, a następnie poprosić o przesłanie zdjęcia przedstawiającego ilość pepperoni w pizzy, zanim ją zrobią.

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
źródło
4

Rozwiązałem problem ze zmianą właściwości "TabIndex" TextBox. Ustawiam 0 dla TextBox, w którym chcę skupić się na formularzu po uruchomieniu programu.

Mehmet Taha Meral
źródło
3

użyj formularza pokazanego wydarzenia i zestawu

MyTextBox.Focus();
Nitin ...
źródło
3

Ustaw wartość właściwości Tab Index = 0, a następnie w postaci funkcji load wpisz:

YourTextboxName.Focus();

To będzie działać.

Shakaib Akhtar
źródło
2

Możesz użyć albo textBox1.select();ustawienia TabIndex w polu tekstowym. TabIndex=0skupiony jako pierwszy.

user9248597
źródło
Jeśli wywołamy textBox1.select (); w procedurze obsługi zdarzenia load, ustawia fokus na textBox1.
Tushar R.
1

Ustaw Tabstop na True i TabIndex na minimum do kontrolki, na której chcesz się skupić.

np. Jeśli masz 2 TextBoxes: TextBox1 i TextBox2, ustaw Tabstop na True dla obu i TabIndex odpowiednio na 0 i 1. Po załadowaniu formularza fokus znajdzie się na TextBox1, a po naciśnięciu klawisza „Tab” fokus zostanie przeniesiony do TextBox2.

Aparna Ratheesh
źródło
1

w formularzu przejdź do właściwości i upewnij się, że właściwość „TopMost” jest ustawiona na true, co rozwiąże Twój problem.

Mustafa
źródło
0

to działało dla mnie ustaw tabindex na 0 this.yourtextbox.TabIndex = 0;

Muhafil Saiyed
źródło
0

W końcu znalazłem problem, którego używałem, i wszystkie twoje rozwiązania nie będą działać z metroTextBox, a wszystkie twoje rozwiązania będą działać z normalnym textBoxem w trybie load, show, visibility_change, events, nawet indeks tabulacji = 0 jest prawidłowy.

   // 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
źródło
-5

W jquery ustaw fokus

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

lub w Javascript możesz to zrobić

window.onload = function() {
  document.getElementById("txtBox1").focus();
};
Sudip Bhattacharya
źródło
4
To może być dobra odpowiedź na pytanie dotyczące witryny internetowej, ale to jest oznaczone tagiem c#i winforms.
Ben Voigt,