Odpowiedzi:
Ustaw ActiveControl
właściwość formularza i powinno być dobrze.
this.ActiveControl = yourtextboxname;
MyTextBox.Focus();
zadziałało - wydaje się, że działa dobrze, gdy program jest uruchomiony.
this.ActiveControl = textBox1;
Każdy rozumie znaczenie „textBox1”. „youttextboxname” brzmi jak... = "MyTextBox";
sprawdź kolejność tabulatorów i upewnij się, że pole tekstowe jest ustawione na zero
Możesz spróbować:
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 .
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();
}
Jeśli chcesz ustawić fokus tylko przy pierwszym wyświetleniu formularza, spróbuj obsłużyć zdarzenie Form.Shown i zrobić to tam. W przeciwnym razie użyj Control.VisibleChanged .
Powodem, dla którego nie możesz go uruchomić, jest to, że Load
zdarzenie 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();
}
}
}
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.
Ustaw wartość właściwości Tab Index = 0, a następnie w postaci funkcji load wpisz:
YourTextboxName.Focus();
To będzie działać.
Możesz użyć albo textBox1.select();
ustawienia TabIndex w polu tekstowym. TabIndex=0
skupiony jako pierwszy.
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.
to działało dla mnie ustaw tabindex na 0 this.yourtextbox.TabIndex = 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();
}
W jquery ustaw fokus
$(function() {
$("#txtBox1").focus();
});
lub w Javascript możesz to zrobić
window.onload = function() {
document.getElementById("txtBox1").focus();
};
c#
i winforms
.
ComboBox
. Ale to też nie działa!