Establezco IsTabStop en falso en un cuadro de texto y sé que esto hace que el control no pueda recibir el foco, pero de acuerdo con el Silverlight Forums, todavía debería poder recibir eventos del mouse. Tengo el evento MouseLeftButtonUp conectado y un punto de interrupción en mi método tbxTotal_MouseLeftButtonUp, y nunca se golpea durante la depuración. El hilo en los Foros de SL ya es bastante antiguo, así que tal vez esto se modificó en alguna actualización. Quiero un cuadro de texto que no se pueda tabular, pero que aún se pueda editar. ¿Realmente debería ser tan difícil?IsTabStop = Falso en un cuadro de texto SL4
6
A
Respuesta
3
No me di cuenta de esto, pero parece ser el caso, Además, parece que no puedo hacer que MouseLeftButtonUp se dispare. MouseLeftButtonDown dispara aunque y usando eso puedes hacer esto.
<TextBox IsTabStop="False" MouseLeftButtonDown="TextBox_MouseLeftButtonDown" />
Luego, en el código puede manejar el evento de esta manera.
private void TextBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var textBox = ((TextBox) sender);
textBox.IsTabStop = true;
textBox.Focus();
textBox.IsTabStop = false;
}
podría valer la pena, mientras que a lo envuelve en un CustomControl
public class FocusableTextBox : TextBox
{
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
if (!IsTabStop)
{
IsTabStop = true;
Focus();
IsTabStop = false;
}
base.OnMouseLeftButtonDown(e);
}
}
1
@seekerOfKnowledge: la desactivación de IsTabStop
en el LostFocus
es un buen enfoque, pero el truco re-enfoque es innecesaria. No tiene ningún efecto visible la primera vez porque el cambio de IsTabStop
aún no ha surtido efecto. Este enfoque también se puede tomar con cualquier otro control.
var control = sender as Control;
if (control != null)
{
control.MouseLeftButtonDown += (sender, args) =>
{ //This event fires even if the control isn't allowed focus.
//As long as the control is visible, it's typically hit-testable.
if (!control.IsTabStop)
{
control.IsTabStop = true;
//threading required so IsTabStop change can take effect before assigning focus
control.Dispatcher.BeginInvoke(() =>
{
control.Focus();
});
}
};
control.LostFocus += (sender, args) =>
{ //Remove IsTabStop once the user exits the control
control.IsTabStop = false;
};
}
Cuestiones relacionadas
- 1. Creación de un área de texto falso
- 2. Jquery fadeout texto en un cuadro de texto y texto
- 3. El uso de un cuadro de texto HTML en lugar de un cuadro de texto ASP.NET
- 4. asp.net ValidateRequest = falso por cuadro de texto en lugar de por página?
- 5. Seleccionar texto en un cuadro de texto deshabilitado en C#
- 6. Insertar pestañas en un cuadro de texto
- 7. Ctrl + C en un cuadro de texto
- 8. Anular la selección de texto en un cuadro de texto
- 9. Obtener texto seleccionado en un cuadro de texto
- 10. MVVM- ¿Cómo puedo seleccionar texto en un cuadro de texto?
- 11. Cómo crear un archivo de texto falso en Python
- 12. Enfoque en un cuadro de texto en un DataTemplate
- 13. BackgroundColor de un cuadro de texto deshabilitado
- 14. validación Fecha de un cuadro de texto
- 15. cuadro de texto TextTrimming
- 16. Cuadro de texto árabe
- 17. WPF: Obtener texto "ajustado" de un cuadro de texto
- 18. javascript - desenfocar un cuadro de texto
- 19. Deshabilitar un cuadro de texto con CSS
- 20. Obtener el texto de un cuadro desplegable
- 21. texto fantasma - cómo tener en texto claro cuadro de texto
- 22. Creando un cuadro de texto WPF Control como el cuadro de texto del destinatario de Outlook
- 23. Rellene un cuadro de texto con jQuery
- 24. cuadro de texto con un fondo transparente
- 25. cómo configurar un texto en un texto de edición que está en un cuadro de diálogo?
- 26. Cuadro de texto - centrado de texto
- 27. Incluir un botón en un cuadro de texto
- 28. restringe un carácter para escribir en un cuadro de texto
- 29. C# - Leer en un archivo de texto grande (150 MB) en un cuadro de texto enriquecido
- 30. ¿Cómo actualizar el valor en un cuadro de texto basado en el valor ingresado en otro cuadro de texto?
Heh, ni siquiera vi si MouseLeftButtonDown funcionaba. Solo va a mostrar que asumir es malo. Gracias. – seekerOfKnowledge
Pero molestamente, solo llamar .Focus en MouseLeftButtonDown no funciona por eso tienes que jugar el baile de encendido/apagado :( – bendewey
Además, como mi cuadro de texto está en una vista de árbol, algunas cosas raras están sucediendo. Cuando hago clic en mi cuadro de texto, se dispara el mouse hacia abajo, establezco IsTabStop en verdadero, le doy enfoque, y en LostFocus, establezco IsTabStop en falso. Sin embargo, el elemento de vista en árbol en el que se encuentra el cuadro de texto se enfoca, cancelando lo que acabo de hacer El elemento de la vista de árbol tiene IsTabStop configurado en falso, por lo que me parece extraño que pueda recibir el enfoque, pero también lo hice. En mi cuadro de texto evento LostFocus, en realidad enfoco de nuevo mi cuadro de texto, y luego directamente , establezca IsTabStop como falso. – seekerOfKnowledge