visual tecla pasar otro net evento enviar datos con cambiar automaticamente c# winforms

c# - tecla - tabular con enter vb net



Presiona Enter para pasar al siguiente control (8)

En un evento de KeyPress, si el usuario presiona Enter, llame

SendKeys.Send("{TAB}")

La mejor manera de implementar la selección automática del texto al recibir el enfoque es crear una subclase de TextBox en su proyecto con la siguiente anulación:

Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs) SelectionStart = 0 SelectionLength = Text.Length MyBase.OnGotFocus(e) End Sub

Luego, use este TextBox personalizado en lugar de los TextBox estándar de WinForms en todos sus Formularios.

Tengo algunos TextBox en el WinForm. Me gustaría que el enfoque se mueva al siguiente control cuando se presiona la tecla Intro? Siempre que un cuadro de texto obtenga el control, también seleccionará el texto, de modo que cualquier edición reemplazará la actual.

¿Cuál es la mejor manera de hacer esto?


Esto puede ayudar:

private void textBox1_KeyDown(object sender, KeyEventArgs e) { // // Detect the KeyEventArg''s key enumerated constant. // if (e.KeyCode == Keys.Enter) { MessageBox.Show("You pressed enter! Good job!"); } }


Puede poner un controlador de KeyPress en sus cuadros de texto y ver qué clave se usó.

Para manejar la selección de texto, coloque un controlador en el evento GotFocus .

También es posible que desee considerar cómo (o si necesita) manejar los TextBoxes de varias líneas.


También puede escribir su propio Control para esto, en caso de que quiera usarlo más a menudo. Suponiendo que tiene varios cuadros de texto en una cuadrícula, se vería algo como esto:

public class AdvanceOnEnterTextBox : UserControl { TextBox _TextBox; public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(String), typeof(AdvanceOnEnterTextBox), null); public static readonly DependencyProperty InputScopeProperty = DependencyProperty.Register("InputScope", typeof(InputScope), typeof(AdvanceOnEnterTextBox), null); public AdvanceOnEnterTextBox() { _TextBox = new TextBox(); _TextBox.KeyDown += customKeyDown; Content = _TextBox; } /// <summary> /// Text for the TextBox /// </summary> public String Text { get { return _TextBox.Text; } set { _TextBox.Text = value; } } /// <summary> /// Inputscope for the Custom Textbox /// </summary> public InputScope InputScope { get { return _TextBox.InputScope; } set { _TextBox.InputScope = value; } } void customKeyDown(object sender, KeyEventArgs e) { if (!e.Key.Equals(Key.Enter)) return; var element = ((TextBox)sender).Parent as AdvanceOnEnterTextBox; if (element != null) { int currentElementPosition = ((Grid)element.Parent).Children.IndexOf(element); try { // Jump to the next AdvanceOnEnterTextBox (assuming, that Labels are inbetween). ((AdvanceOnEnterTextBox)((Grid)element.Parent).Children.ElementAt(currentElementPosition + 2)).Focus(); } catch (Exception) { // Close Keypad if this was the last AdvanceOnEnterTextBox ((AdvanceOnEnterTextBox)((Grid)element.Parent).Children.ElementAt(currentElementPosition)).IsEnabled = false; ((AdvanceOnEnterTextBox)((Grid)element.Parent).Children.ElementAt(currentElementPosition)).IsEnabled = true; } } } }


Tratar de usar:

SendKeys.Send("{TAB}")


Un par de ejemplos de código en C # usando SelectNextControl .

El primero se mueve al siguiente control cuando se presiona ENTER .

private void Control_KeyUp( object sender, KeyEventArgs e ) { if( (e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return) ) { this.SelectNextControl( (Control)sender, true, true, true, true ); } }

El segundo usa las flechas ARRIBA y ABAJO para moverse a través de los controles.

private void Control_KeyUp( object sender, KeyEventArgs e ) { if( e.KeyCode == Keys.Up ) { this.SelectNextControl( (Control)sender, false, true, true, true ); } else if( e.KeyCode == Keys.Down ) { this.SelectNextControl( (Control)sender, true, true, true, true ); } }

Ver el SelectNextControl MSDN SelectNextControl


Pestaña como Enter: crea un control de usuario que hereda el cuadro de texto, reemplaza el método KeyPress . Si el usuario presiona Intro, puede llamar a SendKeys.Send("{TAB}") o System.Windows.Forms.Control.SelectNextControl() . Tenga en cuenta que puede lograr lo mismo utilizando el evento KeyPress .

Enfocar el texto completo: Nuevamente, a través de la anulación o eventos, GotFocus evento GotFocus y luego llame TextBox.Select método TextBox.Select .


private void txt_invoice_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) txt_date.Focus(); } private void txt_date_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) txt_patientname.Focus(); }

}