C# Focus bei UserControl?

1 Antwort

Das Usercontrol ist in Sachen Fokus eine seltsame Geschichte.

Am einfachsten wäre es, die Enabled-Eigenschaft auf False zu setzen. Dabei werden automatisch alle Child-Controls auch auf Enabled = False gesetzt und ist über den Tab nicht mehr zu erreichen.

this.SetStyle(ControlStyles.Selectable, false) wäre auch eine Möglichkeit, aber dann kannst du nicht mehr von einer TextBox des UserControls in eine andere TextBox eines anderen UserControls mit Tab springen.

Gibt sicher noch andere Möglichkeiten, da wird es dann aber etwas komplizierter.

Das Usercontrol zu Disabeln geht leider nicht da dann auch das Label ausgegraut wird und das wollen wir nicht. Die Lösung war jetzt das wir beispielsweise der textbox übergeben welchem Usercontrol sie zugeordnet ist (leider geht das nicht mit Parent da die textbox noch in nem tablelayoutpanel und evtl. ner Group box liegt außerdem gibt es ja verschiedene usercontrols die die textbox benutzen). Und bei diesem Usercontrol setzen wir dann sofern nicht null den Tabstop. Ist leider etwas unschön da wir jede Menge controls hab die das brauchen es aber keine Klasse gibt die ihnen allen als Basis dient (bis auf Windows Standard Klassen).
Jetzt haben wir aber schon wieder das nächste Problem mit Fokussierungen -_-

Aufjedenfall vielen Dank für deine Hilfe

0
@okarin

Ja, du kannst auch beim Deaktivieren den TabStop auf False setzen und beim Aktivieren wieder auf True.

Du könntest auch versuchen direkt von Panel zu erben, anstatt von UserControl.


0