Entwickler-Ecke

WinForms - Button ausgrauen und mit tooltip versehen


wasabi - Mi 23.03.11 11:19
Titel: Button ausgrauen und mit tooltip versehen
Hi,

ich habe das Problem, dass ein ausgegrauter Button (Button.Enable = false) sich nicht mit einem Tooltip versehen lässt, bzw. dieser nicht angezeigt wird wenn der Button "ausgegraut" ist.

Ziel ist, dass der User weiss was er tun muss um den Button zu aktivieren.

Kann mir da jemand eine elegante Lösung ausführlich erklären? Ich hab schon mit ner PictureBox experimentiert das aber nicht hinbekommen.

Grüße
Wasabi


bakachan - Mi 23.03.11 12:04

Wenn der Button nicht Enabled ist löst er auch keine Events mehr aus so viel ist klar.

Was mir jetzt an Lösungen einfällt ist aber auch nicht wirklich elegant:

a) Den Enabled nicht auf false setzen sondern nur den Clickeventhandler vom Clickevent des Buttons lösen (und eventuell den Style des Buttons anpassen damit mans auch sieht).

b) Beim MouseLeave-Event des Parentcontrols könnte man über die MousePosition überprüfen ob die Maus über einen deaktivierten Button ist und dann den Tooltip selbst anzeigen.


Horschdware - Mi 23.03.11 12:09

Alternativ würde mir noch ein Kunstgriff einfallen:

Beim Disabled-Setzen des Buttons eine Transparente Komponente über den Button legen und deren Event nutzen.

Ich meine mich aber daran erinnern zu können, vor Urzeiten mal eine "Popup- und Hilfen-Komponente" genutzt zu haben, die auch diese Hints für deaktivierte Controls möglich machte. Das hatte wenn mich nicht alles täuscht mit den Komponenten des Programms "Help and Manual" zu tun.

Vllt kann man sich ja abgucken, wie die das machen?


Th69 - Mi 23.03.11 12:26

Hi zusammen,

die Variante mit einem transparenten Control hat jemand unter Tooltips für deaktivierte Controls [http://www.mycsharp.de/wbb2/thread.php?threadid=90796] ausprogrammiert.


wasabi - Mi 23.03.11 12:59

user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:

a) Den Enabled nicht auf false setzen sondern nur den Clickeventhandler vom Clickevent des Buttons lösen (und eventuell den Style des Buttons anpassen damit mans auch sieht).


wie genau würde diese Variante denn aussehen?

wie löse den Clickeventhandler vom Clickevent?


Mfg
Wasabi


bakachan - Mi 23.03.11 13:07

ähnlich wie man einen Eventhändler anhängt nur mit einem - anstelle eines +
also:

C#-Quelltext
1:
button1.Click -= new EventHandler(button1_Click);                    


jaenicke - Mi 23.03.11 13:11

Das würde ich aber nicht machen, denn niemand rechnet damit, dass ein Button deaktiviert ist, wenn er nicht so aussieht.


wasabi - Mi 23.03.11 14:10

Ok soweit klappt das mal.

Jetzt würde ich halt gerne noch den Button "ausgrauen"

1) Die Schrift des Buttons ist kein Problem
2) Wenn ich die Maus über den Button ziehe, dann wird der Button "blau" umrandet wie verhindere ich das? welche Eigenschaft muss ich diesbzgl. anpassen?

Mfg
Wasabi