2012-07-11 34 views
5

tôi mới sử dụng WPF. Tôi có một cửa sổ WPF với một DataGrid mà khởi động một quá trình khi nhấp đúp chuột xảy ra. Công việc này tuyệt vời, nhưng khi tôi làm điều này trong một máy tính bảng (với các cửa sổ 7), bằng cách sử dụng màn hình cảm ứng, quá trình này không bao giờ xảy ra. Vì vậy, tôi cần mô phỏng sự kiện nhấp đúp với sự kiện chạm. Bất kỳ ai có thể giúp tôi làm điều này, xin vui lòng?Mô phỏng sự kiện nhấp chuột kép trong Datagrid với touchDown

Trả lời

0

Xem How to simulate Mouse Click in C#? cho làm thế nào để mô phỏng một click chuột (trong cửa sổ-mẫu đính kèm), nhưng nó hoạt động trong WPF bằng cách thực hiện:

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

Cảm ơn bạn rất nhiều! – sonseiya

+0

@somseiya Không sao –

0

Đầu tiên thêm một chức năng Chuột kiện 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; 
} 

Thêm sự kiện nhấp vào một trong các điều khiển WPF của bạn:

private void btnDoSomeThing_Click(object sender, RoutedEventArgs e) 
{ 
    // Do something 
} 

Cuối cùng, Hãy gọi cho sự kiện nhấp chuột từ bất kỳ chức năng:

btnDoSomeThing_Click(new object(), MouseClickEvent()); 

Để mô phỏng nhấp đúp, thêm một sự kiện double click như PreviewMouseDoubleClick và chắc chắn rằng bất kỳ mã bắt đầu trong một chức năng riêng biệt:

private void lvFiles_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    DoMouseDoubleClick(e); 
} 

private void DoMouseDoubleClick(RoutedEventArgs e) 
{ 
    // Add your logic here 
} 

Để gọi sự kiện nhấp đúp, chỉ cần gọi nó từ một chức năng khác (như KeyDown):

private void someControl_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter) 
     DoMouseDoubleClick(e); 
} 
Các vấn đề liên quan