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.

È stato utile?

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);
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top