Laden...

Was denn nun? ActiveControl, Focus, Select?

Erstellt von Sterraf vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.181 Views
S
Sterraf Themenstarter:in
9 Beiträge seit 2011
vor 12 Jahren
Was denn nun? ActiveControl, Focus, Select?

Hi zusammen,

vermutlich mache ich mir das Leben wie immer zu kompliziert, aber aus Fehlern lernt man ja .. sagt man zumindest.

Ich benötige mal wieder Eure Hilfe bei folgendem Problem:

Ich habe EINE Windows-Form. In dieser Form gibt es ein Panel. Innerhalb der Form reagiere ich auf KEY_DOWN :


 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.Equals(Keys.F12))
            {
                mainPanel.Controls.Add(new Kontroller_1());
            }
        }

Ich prüfe also: falls F12 gedrückt wurde, dann lege ins Panel ein UserControl-Objekt, in diesem Fall heisst es Kontroller_1.

In diesem Kontroller gibt es NICHTS, außer einer Textbox. Ich möchte nun, dass diese Textbox den Focus bekommt - aber: das klappt einfach nicht.

Normalerweise, wenn ich kein Key_DOWN-Event auslöse, sondern einfach irgendwo im Code manuell ein neues Controll hinzufüge, springt der Focus in das erste Controller-Element - und gut ist.
Mit Key_Down setzt der den Focus weißgott wo hin, ich verzweifele bald.

textBox.Focus();

funktioniert genauso wenig wie

textBox.Select();

und wenn ich innerhalb des Konstruktors meiner Kontroller-Klasse auf 'ActiveControl' zugreifen will, gibt es eine NullReferenzException.

Was soll ich machen, weiß jemand Rat ?

Danke und liebe Grüße
Sterraf

P
660 Beiträge seit 2008
vor 12 Jahren

Hallo,

was du versuchen könntest wäre, den Focus über die API SetFocus zu setzen.


        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.Equals(Keys.F12))
            {
                var tmpKontroller = new Kontroller_1();
                mainPanel.Controls.Add( tmpKontroller );
                SetFocus( tmpKontroller.YourTextBoxName.Handle );
            }
        }

vllt hat jemand anders eine elegantere Lösung

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

S
Sterraf Themenstarter:in
9 Beiträge seit 2011
vor 12 Jahren

OHMAN !

Ja sicher - jetzt check ich das auch. Der Key-Down-Handler zieht den Focus auf sich und gibt es erstmal nicht ab, es sei denn man gibt ihm den direkten Befehl - genau so wie Du es gemacht hast.

Bah - versteh einer die Welt 😃

Vielen Dank für die Hilfe, das rettet mir den Tag!

LG
Sterraf

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Sterraf,

man sein, dass SetFocus hier (ausnahmsweise) funktioniert, aber ActiveControl zu Setzen ist schon das korrektere.

Das Control, auf das man den Focus setzen will, muss natürlich erstellt (und nicht null) sein.

Bitte beachte vorsorglich [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore