Cliquez sur la transparence pour Visual C # Window Forms?
-
02-07-2019 - |
Question
J'ai créé un panneau et je l'ai configuré pour remplir l'écran. Désormais, je peux voir les fenêtres situées en dessous, mais je veux que ce soit cliqué, ce qui signifie qu'ils peuvent cliquer sur un fichier ou voir l'info-bulle d'un autre objet à travers la transparence.
RE: C'est peut-être trop évident, mais avez-vous déjà essayé d'envoyer le panneau à l'arrière en cliquant avec le bouton droit de la souris et en choisissant "Envoyer à l'arrière-plan"?
Je veux dire comme le bureau ou Firefox, pas quelque chose dans mon projet.
La solution
Il est très facile de créer un formulaire de niveau supérieur transparent. Faites-le simplement remplir l’écran ou la zone requise et définissez-le avec une couleur TransparenyKey et un BackColor de la même valeur.
Le faire pour ignorer la souris est assez simple, il vous suffit de remplacer le WndProc et d'indiquer au WM_HITTEST que toutes les positions de la souris doivent être traitées comme transparentes. Ainsi, la souris interagit avec tout ce qui se trouve sous la fenêtre. Quelque chose comme ça ...
protected override void WndProc(ref Message m)
{
if (m.Msg == (int)WM_NCHITTEST)
m.Result = (IntPtr)HTTRANSPARENT;
else
base.WndProc(ref m);
}