Quiero capturar el texto del cuadro de texto cuando se pulsa la tecla Intro. Estoy usando WPF/visual studio 2010/.NET 4. ¿No sé qué controlador de eventos usar en la etiqueta? También quiero hacer lo mismo para maskedtextbox.Teclee la tecla presionó controlador de eventos
Respuesta
KeyDown o KeyUp.
TextBox tb = new TextBox();
tb.KeyDown += new KeyEventHandler(tb_KeyDown);
static void tb_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//enter key is down
}
}
¿cómo lo hago para el cuadro de texto enmascarado? es un radmaskedtextbox – zack
el radmaskedtextbox no da una opción de "Aceptar Retorno" dentro de la etiqueta ... – zack
Nada sería diferente. MaskedTextBox tiene los mismos manejadores de eventos. De hecho, todos los controles los tienen. – tafa
El evento KeyDown sólo se activan en el cuadro de texto estándar o MaskedTextBox mediante teclas de entrada "normales", no ENTRAR o TAB y así sucesivamente.
Uno puede conseguir llaves especiales como ENTER reemplazando el método IsInputKey:
public class CustomTextBox : System.Windows.Forms.TextBox
{
protected override bool IsInputKey(Keys keyData)
{
if (keyData == Keys.Return)
return true;
return base.IsInputKey(keyData);
}
}
A continuación, se puede utilizar el evento KeyDown de la siguiente manera:
CustomTextBox ctb = new CustomTextBox();
ctb.KeyDown += new KeyEventHandler(tb_KeyDown);
private void tb_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//Enter key is down
//Capture the text
if (sender is TextBox)
{
TextBox txb = (TextBox)sender;
MessageBox.Show(txb.Text);
}
}
}
También puede utilizar PreviewKeyDown en WPF :
<TextBox PreviewKeyDown="EnterClicked" />
o en C#:
myTextBox.PreviewKeyDown += EnterClicked;
Y luego, en la clase adjunto: propiedad
void EnterClicked(object sender, KeyEventArgs e) {
if(e.Key == Key.Return) {
DoSomething();
e.Handled = true;
}
}
En WPF, elemento de cuadro de texto no tendrá oportunidad de utilizar "Enter" para crear KeyUp evento hasta que no se determinarán: AcceptsReturn = "true" .
Pero no resolvería el problema con el manejo del evento KeyUp en el elemento TextBox. Después de presionar "ENTER" obtendrá una nueva línea de texto en TextBox.
He resuelto el problema de utilizar KeyUp Event del elemento TextBox mediante el uso de la estrategia de evento Bubble. Es corto y fácil. Deberá adjuntar un controlador KeyUp Evento de alguna (cualquiera) elemento padre:
XAML:
<Window x:Class="TextBox_EnterButtomEvent.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TextBox_EnterButtomEvent"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid KeyUp="Grid_KeyUp">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height ="0.3*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="1" Grid.Column="1" Padding="0" TextWrapping="WrapWithOverflow">
Input text end press ENTER:
</TextBlock>
<TextBox Grid.Row="2" Grid.Column="1" HorizontalAlignment="Stretch"/>
<TextBlock Grid.Row="4" Grid.Column="1" Padding="0" TextWrapping="WrapWithOverflow">
You have entered:
</TextBlock>
<TextBlock Name="txtBlock" Grid.Row="5" Grid.Column="1" HorizontalAlignment="Stretch"/>
</Grid></Window>
C# parte lógica (manejador KeyUp evento está unido a un elemento de la red):
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Grid_KeyUp(object sender, KeyEventArgs e)
{
if(e.Key == Key.Enter)
{
TextBox txtBox = e.Source as TextBox;
if(txtBox != null)
{
this.txtBlock.Text = txtBox.Text;
this.txtBlock.Background = new SolidColorBrush(Colors.LightGray);
}
}
}
}
RESULTADO:
- 1. ¿Cómo saber qué tecla SHIFT se presionó?
- 2. ¿Verificar si se presionó la tecla Atrás en Android?
- 3. Voltear la animación cuando el controlador presionó en el iPhone
- 4. Controlador de eventos en DataTemplate
- 5. ¿Cómo verificar desde un programa en segundo plano si se presionó la tecla o la combinación?
- 6. Comprobando si se presionó alguna tecla en la aplicación de consola C#
- 7. XMonad: área de trabajo SpawnOn que tenía foco cuando se presionó la tecla spawn
- 8. Teclee una variable de jBoolean a bool
- 9. añadir un controlador de eventos
- 10. Cancelar onbeforeunload controlador de eventos?
- 11. Crear una función para comprobar si se presionó la tecla en Unix usando ncurses
- 12. ¿Cómo uso la tecla Intro como manejador de eventos (javascript)?
- 13. ¿Por qué no presionamos la tecla de borrar la tecla Eliminar y la tecla de retroceso?
- 14. Cómo determinar el valor de la tecla presionada en Windows Phone 7 Teclado numérico?
- 15. Delphi: cómo asignar dinámicamente un controlador de eventos sin sobrescribir el controlador de eventos existente?
- 16. Orden de controlador de eventos de Javascript
- 17. Adjuntar controlador de eventos con controlador nuevo vs Asignarlo directamente
- 18. Eliminación de controlador de eventos anónimo
- 19. Controlador de eventos de Jquery multiselección
- 20. Controlador de eventos y pérdidas de memoria
- 21. Controlador de eventos de almacenamiento HTML5/JS
- 22. JavaScript argumentos de controlador de eventos
- 23. C# eliminación de un controlador de eventos
- 24. ejecución Prevenir de controlador de eventos padre
- 25. Controlador de eventos dinámicamente establecido usando DataTrigger
- 26. VB.NET 2005 - Controlador de eventos "global"?
- 27. ¿Hay eventos antes de ejecutar un controlador?
- 28. Añadir controlador de eventos para ListView Items_added
- 29. Controlador de eventos es siempre nulo
- 30. ¿Recibo eventos de pulsación de tecla y liberación de tecla en aplicaciones de terminal Linux?
nos muestras lo que has hecho hasta ahora? – tafa
private void maskedtxtbox_KeyDown (remitente del objeto, System.Windows.Input.KeyEventArgs e) { if (e.SystemKey == System.Windows.Input.Key.Enter) {// hacer algo aquí – zack