2009-09-14 14 views
7

Czy istnieje jakiś standardowy sposób trasowania wszystkich zdarzeń kluczowych z kontrolki A do innej kontrolki B? Szkoda, że ​​nacisk na klawiaturę nadal nie będzie wyświetlany na A, jednak funkcja obsługi zdarzeń z A wyzwoli wszystkie procedury obsługi zdarzeń o wartości B dla zdarzeń kluczowych.Kierowanie kluczowych zdarzeń do innych formantów

edytuj: Wyjaśnienie: wywoływanie określonego programu obsługi zdarzeń, który napisałem dla B, nie wystarczy. Muszę naśladować faktyczne wydarzenie. Tak na przykład chcę, jeśli klucz zostanie wysłany do TextBox, zostanie zapisany do TextBox. Rozwiązanie podane poniżej tego nie robi (nie wspominając o tym, że jeśli nowe funkcje obsługi zdarzeń są dodawane do B, to całkowicie zawiedzie).

Mam świadomość, że WPF rozróżnia ostrość logiczną i ostrość klawiatury, ale potrzebuję obu ognisk, aby pozostać pod kontrolą A, ale w niektórych przypadkach kieruje swoje przychodzące zdarzenie do innych kontrolek.

+0

Nie możesz po prostu zrobić swoich kluczowych zdarzeń dla kontroli A, czy sprawdzisz, a jeśli zajdzie taka potrzeba, zadzwoń do kluczowych zdarzeń dla Kontroli B? – Relster

+0

Nie! To nie spowodowałoby zdarzenia, wystarczyłoby wywołać pojedynczą określoną funkcję, która była kiedyś powiązana ze zdarzeniem kliknięcia przycisku. Chcę symulować faktyczne wysyłanie zdarzeń WPF. –

+0

@Elazar - Zobacz moją edycję. Czy zamiast tego zadziała metoda 'RaiseEvent()'? – Donut

Odpowiedz

4

Nie możesz zrobić czegoś takiego?

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: kod zmodyfikowane w celu zastosowania metody RaiseEvent() programowo podnieść konkretnego zdarzenia, zamiast po prostu dzwoniąc do obsługi zdarzeń dla button2.

+0

Nie! To nie spowodowałoby zdarzenia, wystarczyłoby wywołać pojedynczą określoną funkcję, która była kiedyś powiązana ze zdarzeniem kliknięcia przycisku. Chcę symulować faktyczne wysyłanie zdarzeń WPF. –

+0

Tego właśnie szukałem! –

+0

Zastanawiam się, dlaczego to się nazywa budzić. Wyszukałem zdarzenie związane z ogniem i wywołałem wydarzenie i wydarzenie wyzwalające, ale bez wyników ... –

Powiązane problemy