2009-09-14 36 views
7

Có cách nào tiêu chuẩn để định tuyến tất cả các sự kiện quan trọng từ điều khiển A đến điều khiển khác B không? Tôi muốn rằng tiêu điểm bàn phím vẫn sẽ ở trên A tuy nhiên trình xử lý sự kiện của A sẽ kích hoạt tất cả các trình xử lý sự kiện của B cho các sự kiện chính.Sự kiện khóa định tuyến để điều khiển khác

chỉnh sửa: Làm rõ: gọi trình xử lý sự kiện cụ thể mà tôi đã viết cho B là không đủ. Tôi cần bắt chước sự kiện thực sự. Vì vậy, ví dụ tôi muốn rằng nếu một khóa được gửi đến một TextBox, nó sẽ được ghi vào TextBox. Các giải pháp đưa ra dưới đây không làm điều đó (không phải đề cập đến một thực tế là nếu xử lý sự kiện mới được thêm vào B nó hoàn toàn thất bại).

Tôi biết rằng WPF phân biệt giữa tiêu điểm hợp lý và tiêu điểm bàn phím, nhưng tôi cần cả hai tập trung để duy trì kiểm soát A, nhưng trong một số trường hợp nhất định định tuyến sự kiện đến các điều khiển khác.

+0

Bạn không thể chỉ thực hiện các sự kiện quan trọng của mình để kiểm soát Có thực hiện một số kiểm tra và nếu cần thiết hãy gọi các sự kiện chính cho Điều khiển B? – Relster

+0

Không! Điều đó sẽ không kích hoạt sự kiện, nó sẽ chỉ gọi một hàm cụ thể duy nhất đã từng được liên kết với sự kiện nhấp của nút. Tôi muốn mô phỏng sự kiện WPF thực sự gửi đi. –

+0

@Elazar - Xem chỉnh sửa của tôi. Phương thức 'RaiseEvent()' có hoạt động thay thế không? – Donut

Trả lời

4

Bạn không thể làm điều gì đó như thế này?

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
    // Check if the event needs to be passed to button2's handler 
    if (conditionIsMet) 
    { 
     // Send the event to button2 
     button2.RaiseEvent(e); 
    } 
    else 
    { 
     // button1's "Click" code 
    } 
    } 

    private void button2_Click(object sender, RoutedEventArgs e) 
    { 
    // button2's "Click" code 
    } 

Edit: đang thay đổi để sử dụng phương pháp RaiseEvent() để lập trình nâng cao một sự kiện cụ thể, chứ không chỉ kêu gọi xử lý sự kiện cho button2.

+0

Không! Điều đó sẽ không kích hoạt sự kiện, nó sẽ chỉ gọi một hàm cụ thể duy nhất đã từng được liên kết với sự kiện nhấp của nút. Tôi muốn mô phỏng sự kiện WPF thực sự gửi đi. –

+0

Đó là những gì tôi đang tìm kiếm! –

+0

Tôi tự hỏi tại sao nó được gọi là sự kiện nâng cao. Tôi googled cho sự kiện cháy và gọi sự kiện và kích hoạt sự kiện nhưng không có kết quả ... –

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