Jak mogę utworzyć formularz, który cokolwiek zrobię zna myszy, będzie tak, jakby nie było tam formularza i cokolwiek jest za (co będzie częścią mojej aplikacji) otrzyma wszystkie dane z myszy. To, co chcę zrobić, to w zasadzie samouczek, który podkreśla elementy sterujące, które użytkownik musi kliknąć. Wiem, jak generować kliknięcia, ale chciałbym rozszerzyć funkcjonalność na każde możliwe wejście myszy. Próbowałem sobie poradzić WndProc
w mojej formie i wysłać wiadomość do wszystkiego, co jest za nią, ale to był bałagan. Czy jest na to lepszy sposób?
Inną możliwością jest zachowanie formyprzezroczyste i pomaluj dowolną kontrolkę, która powinna otrzymać dane od myszy, ale chcę tylko wiedzieć, czy wyróżnienie (malowanie kontrolki półprzezroczystym pędzlem) jest możliwe.
Odpowiedzi:
0 dla odpowiedzi № 1Utwórz okno samouczka (półprzezroczyste) za pomocąkonstruktor przyjmuje parametr okna nadrzędnego. W oknie zdarzenia MouseDown / MouseUp wywołaj moduł obsługi zdarzeń myszy w dół / myszy w górę rodzica.
publiczna klasa częściowa ParentWindow: Window { public ParentWindow () { InitializeComponent (); }
private void testButton_Click(object sender, RoutedEventArgs e)
{
TutorialWindow tutorialWindow = new TutorialWindow(this);
tutorialWindow.Show();
}
public void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
// Do something
}
}
I klasa TutorialWindow
publiczna klasa częściowa TutorialWindow: Window { prywatny rodzic ParentWindow;
public TutorialWindow(ParentWindow parent)
{
InitializeComponent();
this.parent = parent;
}
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
this.parent.Window_MouseDown(sender, e);
}
}
Właściwości okna samouczka można zmodyfikować, aby uczynić je półprzezroczystym, a nawet „znikać”, gdy użytkownik kliknie okno.