2010-05-09 17 views
5

Utworzono półprzezroczysty formularz. Chciałbym, aby ludzie mogli kliknąć obszar formularza, a formularz nie obsługuje kliknięcia. Chciałbym, aby wszystko, co jest pod formularzem, otrzymywało kliknięcie.Kliknięcie w formularzu C#

+0

możliwy duplikat [przezroczystości kliknięcia dla formularzy okna Visual C#?] (Http://stackoverflow.com/questions/112224/click-through-transparency-for-visual-c-window-forms) – Joey

+0

Co będzie pod spodem forma? – Ikaso

Odpowiedz

3

Można to zrobić z SetWindowLong:

int initialStyle = GetWindowLong(this.Handle, -20); 
SetWindowLong(this.Handle, -20, initialStyle | 0x80000 | 0x20); 

Istnieje kilka magiczne numery tutaj:

  • -20 - GWL_EXSTYLE

    Pobiera rozszerzone okno stylów.

  • 0x80000 - WS_EX_LAYERED

    Tworzy layered window.

  • 0x20 - WS_EX_TRANSPARENT

    Określa, że ​​okno utworzone z tego stylu nie powinny być pomalowane aż rodzeństwo pod oknem (które zostały stworzone przez tego samego wątku) zostały pomalowane. Okno wydaje się przezroczyste, ponieważ bity leżące u podnóża rodzeństwa zostały już pomalowane.

Istnieje wiele artykułów w całej sieci, w jaki sposób to zrobić, jak this one.

Powiązane problemy