Benutzer mit den meisten Antworten
Checkbox als Disabled zeichnen

Frage
-
Hallo,
ich möchte mit einer CheckBox folgendes Szenario erreichen:
Die CheckBox soll disabled, aber Checked sein. Das ist ja kein Problem. Wenn man aber drauf klickt, soll der Haken entfernt werden können, wenn einer gesetzt ist und sie disabled ist. Wenn sie disabled ist, aber kein Haken gesetzt, dann soll nichts passieren.
Die Ereignisse Click und Checked Change kommen allerdings bei Enabled = False nicht mehr durch. Jetzt dacht ich schon daran die Farbe der weißen Box einfach auf Grau zu setzen, aber da kann man wohl nur mit einem überschriebenen Paint-Ereignis hin kommen, oder? Gibt es noch andere Möglichkeiten, die weniger Coding erfordern?
Antworten
-
Hallo SP.,
siehe u.a.:
[VisualStyleElement.Button.CheckBox.CheckedDisabled-Eigenschaft (System.Windows.Forms.VisualStyles)]
http://msdn.microsoft.com/de-de/library/system.windows.forms.visualstyles.visualstyleelement.button.checkbox.checkeddisabled.aspx[Gewusst wie: Rendern eines visuellen Stilelements]
http://msdn.microsoft.com/de-de/library/ms171735.aspx
ciao Frank- Als Antwort markiert SPDeveloperXP Freitag, 26. August 2011 11:20
-
Meinst du das so ? :
void c_Click(object sender, EventArgs e) { var box = (CheckBox) sender; if (!box.Enabled && box.Checked) { box.Checked = false; return; } if(box.Enabled) return; if (!box.Enabled && !box.Checked) box.Checked = false; }
- Als Antwort markiert SPDeveloperXP Freitag, 26. August 2011 11:20
Alle Antworten
-
Hallo SP.,
siehe u.a.:
[VisualStyleElement.Button.CheckBox.CheckedDisabled-Eigenschaft (System.Windows.Forms.VisualStyles)]
http://msdn.microsoft.com/de-de/library/system.windows.forms.visualstyles.visualstyleelement.button.checkbox.checkeddisabled.aspx[Gewusst wie: Rendern eines visuellen Stilelements]
http://msdn.microsoft.com/de-de/library/ms171735.aspx
ciao Frank- Als Antwort markiert SPDeveloperXP Freitag, 26. August 2011 11:20
-
Meinst du das so ? :
void c_Click(object sender, EventArgs e) { var box = (CheckBox) sender; if (!box.Enabled && box.Checked) { box.Checked = false; return; } if(box.Enabled) return; if (!box.Enabled && !box.Checked) box.Checked = false; }
- Als Antwort markiert SPDeveloperXP Freitag, 26. August 2011 11:20
-
Hallo SP.,
hier auch ein Beispiel:
[Themed CheckBox]
https://sourcegrid.svn.codeplex.com/svn/trunk/DevAgeSourcePack4/DevAge.Windows.Forms/Drawing/VisualElements/CheckBoxThemed.csAußerdem gibt es für einige Fälle auch die AutoCheck-Eigenschaft.
ciao Frank -
Hallo Frank, Hallo Pavel
ich habe nochmals eine Frage zum Rendering. Kann es sein, dass diese VisualStylElements nur funktionieren, wenn man mind. das Windows XP Look&Feel eingestellt hat? An einem anderen Rechner mit Windows 2000 Look stürzt das bei mir leider ab...
Mir scheint es fast so zu sein, dass es nur mit dem moderneren XP Look geht. Kann das sein?
Kann man so ein Rendering sonst noch irgendwie machen, so dass das nicht vom eingestellten Look abhängig ist? -
Hallo SP.,
ja, unter Windows 2000 wird dies AFAIK nicht unterstützt.
[Application.EnableVisualStyles-Methode (System.Windows.Forms)]
http://msdn.microsoft.com/de-de/library/system.windows.forms.application.enablevisualstyles.aspx[Rendering von Steuerelementen mit visuellen Stilen]
http://msdn.microsoft.com/de-de/library/ms171733.aspxaber Windows 2000 ist nun auch 11 Jahre alt und Windows 3.1 wird ja auch nicht unterstützt ;-)
Also irgendwo muß man auch mal eine Grenze des Supports haben, zumal der allgemeine Support von Microsoft für Windows 2000 am 13. Juli 2010 endete.
ciao Frank -
Hallo Frank,
hoffe mal, dass ein Application.EnableVisualStyles() hilft. Es handelt sich nicht um Windows 2000 als Betriebssystem, sondern um Windows XP, aber mit der Klassischen Oberlfäche. Diese sieht aber aus, wie damals zu Windows 2000 Zeiten (lang ist's her!!) ;-)
Bedeutet dann wohl, dass ich jegliches Rendering mit den Visual Styles vergessen kann, auch wenn nur dieses klassiche Theme eingestellt ist. Mir wäre es im Prinzip egal, ob die CheckBox-Elemente "modern" gezeichnet sind, oder nicht. Wichtig ist mir lediglich, dass ich diese Funktionalität mit den anklickbaren, aber disabled gezeichneten CheckBoxen erreichen kann.
Zur Not müsste ich dann wohl anklickbare Bilder auf die Oberfläche legen, aber das wäre nur die Notlösung. ;-)
Wie wurden z.B. unter älteren Benutzeroberflächen diese halb angeklickten CheckBoxes gemacht? Mit halb angeklickt meine ich, dass der Haken gesetzt ist, aber der weiße Hintergrund im Kästchen etwas ausgegraut ist. In älteren Oberflächen haben ich diesen Effekt öfter gesehen. Jetzt eher weniger...
-
Hallo Frank,
ich habe es jetzt anders gelöst und habe mich vom Visual Style Renderer verabschiedet und setze jetzt den normalen CheckBoxRenderer ein:
http://msdn.microsoft.com/de-de/library/system.windows.forms.checkboxrenderer.aspx
Eventuell könnt ich noch abfragen, ob ein VisualStyleRenderer verwendet werden kann (Application.RenderWithVisualStyles) und dann entweder die VisualStyles benutzen, oder eben nicht.
-
Hallo SP.,
- CheckBoxRenderer ...
ja, den hatte ich in meinem Link bei [Rendering von Steuerelementen mit visuellen Stilen] auch schon verlinkt.
Ja, die Abfrage, ob Visuelle Stile unterstützt sind, ist IMHO richtig.
Also würde ich so machen, wie Du es vorhast.
ciao Frank