Fare clic sulla trasparenza per i moduli finestra di Visual C #?
-
02-07-2019 - |
Domanda
Ho creato un pannello e lo ho impostato per riempire lo schermo, ora posso vedere le finestre sottostanti, ma voglio che sia cliccato, il che significa che potrebbero fare clic su un file o vedere un suggerimento di un altro oggetto attraverso la trasparenza.
RE: questo può essere troppo ovvio, ma hai provato a inviare il pannello sul retro facendo clic con il pulsante destro del mouse e scegliendo " Send to Back " ;?
Intendo come il desktop o Firefox, non qualcosa all'interno del mio progetto.
Soluzione
La creazione di un modulo di livello superiore che è trasparente è molto semplice. Basta farlo riempire lo schermo o l'area richiesta e definirlo per avere un colore TransparenyKey e BackColor dello stesso valore.
Farlo ignorare il mouse è abbastanza semplice, devi solo sostituire WndProc e dire a WM_HITTEST che tutte le posizioni del mouse devono essere trattate come trasparenti. In questo modo il mouse interagisce con tutto ciò che accade sotto la finestra. Qualcosa del genere ...
protected override void WndProc(ref Message m)
{
if (m.Msg == (int)WM_NCHITTEST)
m.Result = (IntPtr)HTTRANSPARENT;
else
base.WndProc(ref m);
}