Risposte:
Imposta la ActiveControlproprietà del modulo e dovresti andare bene.
this.ActiveControl = yourtextboxname;
MyTextBox.Focus();funzionato - sembra funzionare bene una volta che il programma è in esecuzione.
this.ActiveControl = textBox1;Tutti capiscono il significato di "textBox1". "youttextboxname" suona come... = "MyTextBox";
controlla l'ordine delle schede e assicurati che la casella di testo sia impostata su zero
Puoi provare:
Secondo la documentazione:
Il metodo Select attiva il controllo se il bit di stile Selezionabile del controllo è impostato su true in ControlStyles, è contenuto in un altro controllo e tutti i suoi controlli padre sono entrambi visibili e abilitati.
Puoi prima verificare se il controllo può essere selezionabile controllando la proprietà MyTextBox.CanSelect .
Non è possibile impostare lo stato attivo su un controllo se non è stato eseguito il rendering. Form.Load () si verifica prima del rendering dei controlli.
Vai agli eventi del modulo e fai doppio clic sull'evento "Mostrato". Nel gestore di eventi mostrato nel modulo, chiama il metodo control.Focus ().
private void myForm_Shown(object sender, EventArgs e)
{
// Call textbox's focus method
txtMyTextbox.Focus();
}
Se si desidera impostare lo stato attivo solo la prima volta che viene visualizzato il modulo, provare a gestire l' evento Form.Shown e farlo lì. Altrimenti usa Control.VisibleChanged .
Il motivo per cui non riesci a farlo funzionare è perché l' Loadevento viene chiamato prima che il modulo venga disegnato o reso.
È come dire a una pizzeria come preparare la tua pizza, e poi chiedere loro di inviarti una foto di quanti peperoni ci sono sulla tua pizza prima che ce la facciano.
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();
}
}
}
Ho risolto il mio problema con la modifica della proprietà "TabIndex" di TextBox. Ho impostato 0 per TextBox che desidero focalizzare su Form all'avvio del programma.
Imposta il valore della proprietà dell'indice di tabulazione = 0 e quindi nella funzione di caricamento del modulo scrivi:
YourTextboxName.Focus();
Funzionerà.
È possibile utilizzare textBox1.select();o TabIndex nelle impostazioni della casella di testo. TabIndex=0focalizzato per primo.
Imposta Tabstop su True e TabIndex al minimo sul controllo su cui devi concentrarti.
Ad esempio, se si dispone di 2 caselle di testo: TextBox1 e TextBox2, impostare Tabstop su True per entrambi e TabIndex su 0 e 1 rispettivamente. Quando il modulo viene caricato, lo stato attivo sarà su TextBox1 e premendo il tasto 'Tab', lo stato attivo verrà spostato su TextBox2.
ha funzionato per me impostare tabindex su 0 this.yourtextbox.TabIndex = 0;
Alla fine ho scoperto il problema che stavo usando metro framework e tutte le tue soluzioni non funzioneranno con metroTextBox e tutte le tue soluzioni funzioneranno con textBox normale in caricamento, show, visible_change, eventi, anche l'indice tab = 0 è valido.
// 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();
}
In jquery metti a fuoco
$(function() {
$("#txtBox1").focus();
});
o in Javascript puoi farlo
window.onload = function() {
document.getElementById("txtBox1").focus();
};
c#e winforms.
ComboBox. Ma non funziona neanche!