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

Odpowiedzi:


341

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

this.ActiveControl = yourtextboxname;

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


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 .


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();
    }


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().


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();
        }
    }
}

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.



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ć.


2

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


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.


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.



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();
    }

-5

W jquery ustaw fokus

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

lub w Javascript możesz to zrobić

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

4
To może być dobra odpowiedź na pytanie dotyczące witryny internetowej, ale to jest oznaczone tagiem c#i winforms.
Ben Voigt,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.