Laden...

Button-Problem mit Forecolor

Erstellt von Sclot vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.248 Views
S
Sclot Themenstarter:in
324 Beiträge seit 2007
vor 15 Jahren
Button-Problem mit Forecolor

Hallo 🙂

Problem:
Ich ändere die Forecolor eines Buttons z.b. auf Color.Red
Beim Enter des Buttons wird nun auch ein roter Rahmen um den Button angezeigt, bzw wenn dieser den Focus hat.

Das scheint ".NET-Standard" zu sein, aus Visual FoxPro bin ich es anders gewohnt und finde dies sieht nun irgendwie sehr unglücklich aus 😕

Gibt es eine Möglichkeit diesen Rahmen weg zu bekommen?
Oder eine Begründung, warum man diesen Rahmen eingeführt hat?

Danke.

3.825 Beiträge seit 2006
vor 15 Jahren

Hallo Sclot,

warum man diesen Rahmen eingeführt hat?

Damit man sieht wenn ein Button aktiv ist. Man kann ja mit der Tab-Taste alle Buttons durchgehen.

Es gibt verschiedene Button-Styles (Flatstyle), vielleicht passt da ein anderer besser.

Wenn Du bei dem Button Tabstop deaktivierst und beim Anklicken den Focus wieder woanders hin setzt sieht der Anwender den Rahmen recht selten.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Sclot,

es gibt zwei Rahmen:

Den außenrum, der angibt, welcher Button der Default-Button ist, also der, der bei Enter "gedrückt" wird.

Den innenrum, der angibt, welcher Button den Focus hat, also der, der bei Space "gedrückt" wird.

Beides sind also Hinweise für den Benutzer, die die Bedienung mir der Tastatur erleichtern. Du solltest diese Hilfen nicht nur aus ästhetischen Gründen abschalten, weil das die Bedienung der Anwendung unnötig erschwert.

Wenn triftigere Gründe gibt: Control.ShowFocusCues.

herbivore

S
6 Beiträge seit 2008
vor 15 Jahren

Hallo miteinander,

ich klinke mich jetzt mal in diesen Thread ein, weil ich ein ähnliches Problem habe.
Ich habe eine Klasse CustomButton erstellt und diese von Button abgeleitet


public class CustomButton : System.Windows.Forms.Button {
        protected override bool ShowFocusCues {
            get {
                return false;
            }

        }
}

Leider wird bei mir immernoch nach einem Klick dieser Rahmen angezeigt. Der entsprechende Button hat folgende Eigenschaften:


this.button1.Location = new System.Drawing.Point(67, 115);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.TabStop = false;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;

Hintergrund ist, dass es sich bei der Anwendung um eine TouchScreen Anwendung handelt. Da möchte ich nach einem Klick auf den Button keinen Focus Rahmen.

Hat einer von euch eine Idee?

Danke euch im Voraus und schonmal ein schönes Wochenende
Grüße Schlonzo

5.299 Beiträge seit 2008
vor 15 Jahren

evtl. ein ganz doofer Fehler:

this.button1.Location = new System.Drawing.Point(67, 115);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;

Wenn das Designer-Code ist, siehtes so aus, als ob du gar keinen CustomButton verwendest, der Designer würdeja das Teil erstmal "customButton1" benennen.

Wenns dein Code ist, weißichauch nicht, worans liegt, (fände den Button aber schlecht benamt).

Der frühe Apfel fängt den Wurm.

S
6 Beiträge seit 2008
vor 15 Jahren

Danke, aber neeeee das isses leider nicht. button1 ist eine Instanz von CustomButton

S
6 Beiträge seit 2008
vor 15 Jahren

Also nach weiterer Recherche hab ich für mich nun einen Weg gefunden. Auch wenn ich nicht weiß, warum die Variante die scheinbar bei allen anderen funktioniert, bei mir nicht funktioniert.

Ich hab es jetzt mit folgendem Code im Konstruktor gelöst:


this.SetStyle(System.Windows.Forms.ControlStyles.Selectable, false);

Grüße
Schlonzo