2012-11-05 21 views
7

Tôi đang tìm cách chặn mọi nhấp chuột trong ứng dụng WPF của mình. Dường như điều này sẽ dễ dàng với cơ chế định tuyến lệnh, nhưng xin lỗi tôi không tìm thấy bất cứ điều gì.Chặn mọi nhấp chuột vào ứng dụng WPF

Ứng dụng của tôi thực hiện một số mức bảo mật và có yêu cầu tự động hoàn nguyên về mức giới hạn nhất nếu không có ai tương tác với (nhấp chuột) ứng dụng trong x phút. Kế hoạch của tôi là thêm bộ hẹn giờ hết hạn sau x phút và điều chỉnh mức bảo mật. Mỗi lần nhấp chuột vào ứng dụng sẽ đặt lại bộ hẹn giờ.

+1

Tôi cho rằng không có cơ hội nào họ sẽ vui vẻ đánh máy và khóa ứng dụng trên chúng vì chúng chưa sử dụng chuột? – Ian

+0

Xin lỗi, tất cả mọi người, vì sự chậm trễ ... đã làm việc vào sáng thứ Hai này nhưng đã bị lôi kéo vào một thứ khác. Cảm ơn bạn rất nhiều vì đã trả lời nhanh, sẽ quay lại sớm này – nmarler

Trả lời

16

Bạn có thể đăng ký một handler lớp:

public partial class App : Application 
    { 
     protected override void OnStartup(StartupEventArgs e) 
     { 
      EventManager.RegisterClassHandler(typeof(Window), Window.PreviewMouseDownEvent, new MouseButtonEventHandler(OnPreviewMouseDown)); 

      base.OnStartup(e); 
     } 

     static void OnPreviewMouseDown(object sender, MouseButtonEventArgs e) 
     { 
      Trace.WriteLine("Clicked!!"); 
     } 
    } 

này sẽ xử lý bất kỳ sự kiện PreviewMouseDown trên bất kỳ cửa sổ được tạo ra trong ứng dụng.

+0

Wow, đã cho tôi một thời gian dài để lấy lại điều này nhưng cuối cùng tôi đã tìm thấy thời gian. @baboon gợi ý tuyệt vời để đăng ký một lần và quên nó - nó hoạt động rất tốt. Cảm ơn bạn – nmarler

1
<Window .... PreviewMouseDown="Window_PreviewMouseDown_1"> 
</Window> 

Điều này sẽ phù hợp với bạn.

Đám cháy này ngay cả khi các sự kiện khác MouseDown kích hoạt các thành phần chứa.

Theo đề xuất của Clemens trong các ý kiến, PreviewMouseDown là lựa chọn tốt hơn so với MouseDown, vì điều đó đảm bảo bạn không thể ngăn sự kiện diễn ra trong một sự kiện khác.

+2

Có lẽ là [PreviewMouseDown] (http://msdn.microsoft.com/en-us/library/system.windows.uielement.previewmousedown.aspx). – Clemens

+0

Điểm rất tốt. :) –

+1

Sử dụng một sự kiện sôi nổi sẽ luôn là một ý tưởng tồi trong trường hợp của mình, vì nhiều điều khiển có thể xử lý các sự kiện này. sử dụng phiên bản đường hầm (PreviewMouseDown) là một ý tưởng tốt hơn. Edit: Rất tiếc, không đủ nhanh :) Bên cạnh đó, điều này có vẻ giống như cách để đi fro tôi :) – Sisyphe

Các vấn đề liên quan