soy nuevo con WPF. Tengo una ventana de WPF con una cuadrícula de datos que inicia un proceso cuando se produce un doble clic. Esto funciona muy bien, pero cuando hago esto en una tableta (con Windows 7), usando la pantalla táctil, el proceso nunca ocurre. Entonces necesito emular el evento de doble clic con eventos táctiles. ¿Alguien puede ayudarme a hacer esto, por favor?Emular el evento de doble clic en Datagrid con touchDown
5
A
Respuesta
0
Ver How to simulate Mouse Click in C#? de cómo emular un clic del ratón (en Windows formas), pero funciona en WPF haciendo:
using System.Runtime.InteropServices;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
public void DoMouseClick()
{
//Call the imported function with the cursor's current position
int X = //however you get the touch coordinates;
int Y = //however you get the touch coordinates;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
}
}
0
Primero se debe agregar una función de ratón evento click:
/// <summary>
/// Returns mouse click.
/// </summary>
/// <returns>mouseeEvent</returns>
public static MouseButtonEventArgs MouseClickEvent()
{
MouseDevice md = InputManager.Current.PrimaryMouseDevice;
MouseButtonEventArgs mouseEvent = new MouseButtonEventArgs(md, 0, MouseButton.Left);
return mouseEvent;
}
Añadir un evento de clic a uno de sus controles WPF:
private void btnDoSomeThing_Click(object sender, RoutedEventArgs e)
{
// Do something
}
Por último, llamar al evento clic desde cualquier función:
btnDoSomeThing_Click(new object(), MouseClickEvent());
Para simular un doble clic, añadir un evento de doble clic como PreviewMouseDoubleClick y asegurarse de que cualquier código comienza en una función separada:
private void lvFiles_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
DoMouseDoubleClick(e);
}
private void DoMouseDoubleClick(RoutedEventArgs e)
{
// Add your logic here
}
Para invocar el evento de doble clic, simplemente llamarlo desde otra función (como KeyDown):
private void someControl_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
DoMouseDoubleClick(e);
}
Cuestiones relacionadas
- 1. Implementando el evento de doble clic en Silverlight 4 Datagrid
- 2. Recibiendo el evento de doble clic
- 3. Evento de doble clic en android
- 4. Hacer doble clic en un evento en el elemento JList
- 5. MvvmLight EventToCommand y WPFToolkit DataGrid haga doble clic en
- 6. Mostrar RowDetails haciendo doble clic en WPF DataGrid
- 7. C# Listbox Elemento Doble clic Evento
- 8. Resaltado con doble clic
- 9. ¿por qué se activa el evento DataGrid MouseDoubleClick cuando hace doble clic en la barra de desplazamiento?
- 10. Distinga entre hacer doble clic con el mouse y hacer clic con el mouse en wpf
- 11. Agregar Evento de doble clic en la celda CellTable - GWT
- 12. Interceptar clic simple o doble del mouse - solo ejecutar doble clic en el código al hacer doble clic
- 13. .NET: haga doble clic en evento en TabControl
- 14. Adjuntar evento de doble clic a una etiqueta
- 15. Hacer doble clic en el evento en el borde de la ventana de WPF
- 16. Necesita cancelar eventos de clic/mouseup cuando se hace doble clic en evento detectado
- 17. java: evento de captura de doble clic en el icono en la bandeja
- 18. Obtención de información de fila después de un doble clic
- 19. ASP.Net haga doble clic en el problema
- 20. Salir/deshabilitar el modo de edición después de hacer doble clic en evento manejado
- 21. WPF ListBoxItem haga doble clic en?
- 22. Personas que hacen doble clic en todo en las páginas web ... jQuery doble clic en el problema
- 23. Java: ignorar un solo clic con doble clic?
- 24. identificando doble clic en java
- 25. ¿Cómo hacer doble clic y evento de un solo clic para el botón de enlace del control de Asp.net?
- 26. Haga clic en el evento de opción
- 27. evitar la 'doble acontecimiento' cuando se hace clic ETIQUETAS dentro de un elemento con un evento de clic
- 28. Cómo evitar que se active el evento de un solo clic al hacer doble clic en extjs
- 29. WPF Datagrid Fila Edición evento "ENDED"
- 30. Evento de doble clic en la opción de cuadro de lista no activada en IE
¡Muchas gracias! – sonseiya
@somseiya No hay problema –