Forum: PC-Programmierung C#-DomainUpDown - Sperren


von Manuel (Gast)


Lesenswert?

Hallo,

ich habe ein kleines Problem mit WindowsForms(C#). Besser gesagt mit 
einer
DomainUpDown.
In dieser DomainUpDown steht:

Index  Text
  0    "Ja"
  1    "Nein"

Die Property ReadOnly=false.
Mit den Pfeiltasten kann man also zwischen Ja(0) und Nein(1) auswählen.
Leider habe ich herausgefunden das man die Auswahl auch durch die 
Tastatur
beeinflussen kann.

Wenn man auf den Text in der DomainUpDown klickt dann springt da der 
Curser
rein.

Steht die DUpDown auf "Ja" und ich drücke auf meiner Tastertur auf ein 
"N"
dann springt die Auswahl in der DUpDown auf "Nein".
Dies funktioniert auch umgekehrt wenn die Auswahl auf "Nein" steht und 
ein
"J" gedrückt wird.

Wie kann man dieses Verhalten unterbinden ich will eine Steuerung 
ausschließlich durch die Pfeiltasten zulassen.

Das Problem wäre wahrscheinlich auch behoben wenn der Curser bei einem 
Klick auf den Text nicht in die DUpDown springen würde

von bluppdidupp (Gast)


Lesenswert?

Du willst die Auswahl durch Tastatur/Mausrad unterbinden und nur über 
die Pfeiltasten zulassen? - Warum?!

von Manuel (Gast)


Lesenswert?

@bluppdidupp
Ich will zu einem gewissem Zeitpunkt den Zugriff auf das DUpDown 
komplett
sperren.
Das sperren macht ich in diesem Fall nicht über das Attribut Enabled 
weil mir
das Steuerelement dann so ausgegraut wird.(Es hat glaube ich noch andere 
Nachteile gegeben)


Nur gibt es da eben den Fehler das ich das die Auswahl immernoch über
Tastatur/Maus ändern kann.

Wenn es da irgendeine Möglichkeit gibt die Funktion zu unterbinden,lasst
es mich wissen

von Manuel (Gast)


Lesenswert?

Der Vollständigkeit halber -> Problem gelöst

class FixedDomainUpDown:DomainUpDown
    {
        public bool EnableButton { get; set; }
        public override void DownButton()
        {
            if (ReadOnly&&EnableButton)
                return;
            base.DownButton();
        }

        public override void UpButton()
        {
            if (ReadOnly&&EnableButton)
                return;
            base.UpButton();
        }

        protected override void OnMouseWheel(MouseEventArgs e)
        {
            if (ReadOnly && EnableButton)
                return;
            base.OnMouseWheel(e);
        }
        protected override void OnTextBoxKeyPress(object source, 
KeyPressEventArgs e)
        {
            if (ReadOnly && EnableButton)
                return;
            base.OnTextBoxKeyPress(source, e);
        }
    }

von bluppdidupp (Gast)


Lesenswert?

(nur Ja/Nein hört sich übrigens eher nach nem Fall für ne Checkbox an 
^^)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.