3 Stimmen

Wie man den Fokus auf ein Objekt (Textbox) im Hauptformular von einem anderen Formular aus setzt (C#)

Ich habe alles versucht, was ich weiß. Das Problem muss sein, dass mein Textfeld sich in einer Gruppenbox befindet. Ich habe ein Hauptformular, von dem aus ich zu einem anderen Formular wechsle. Wenn ich zum Hauptformular zurückkehre, möchte ich, dass ein bestimmtes Objekt fokussiert ist. Wie wird das gemacht? Hier ist mein Code in meinem Hauptformular.

    private void button1_Click(object sender, EventArgs e)
    {
         Form1 frm = new Form1();
         frm.ShowDialog();
    }

So kehre ich jetzt von Form1 zu meinem Hauptformular zurück.

    private void button3_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.OK;
    }

Ich habe textBox1 im Hauptformular. Wie kann ich den Fokus auf textBox1 setzen, wenn ich Form1 verlasse und in das Hauptformular gehe? Ich habe textBox1.Focus(); und this.ActiveControl = this.textBox1; unter den Ereignissen Load, Show, Activated und Enter im Hauptformular ausprobiert. Hat immer noch nicht funktioniert. Ich habe versucht, eine öffentliche Methode zu erstellen und sie unter dem Ausgangsbutton von Form1 aufzurufen. So wie dies.

Im Hauptformular,

    public void textBox1Focus()
    {
        textBox1.Focus();
    }

Und dann in Form1,

    private void button3_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.OK;
        Mainform frm = new Mainform();
        frm.textBox1Focus();
    }

Was immer noch nicht funktioniert hat. Mein textBox1 befindet sich in einer Gruppenbox. Könnte das der Grund sein?

Danke.

7voto

Cody Gray Punkte 229889

Ich verstehe nicht, wie der Code, den du gezeigt hast, überhaupt kompiliert. Du rufst textBox1Focus() innerhalb einer Methode auf, die in der Form1-Klasse definiert ist, die meines Wissens nach keine Definition für textBox1Focus enthält. Diese Methode ist nur in der Mainform-Klasse definiert.

Und nein, das Textfeld in einer Gruppenfeld platziert zu haben, verhindert nicht, dass es den Fokus bekommt. Es gibt etwas anderes in deinem Code falsch. Es ist schwer zu sagen; es fühlt sich an, als würde ich einen Sonnenuntergang durch Jalousien betrachten, anstatt durch ein großes Fenster.

Wie auch immer, ich vermute, es gibt eine einfachere Lösung. Setze einfach am Ende der Methode button1_Click den Fokus auf das Textfeld-Steuerlement. Die ShowDialog-Methode ist ein blockierender Aufruf, was bedeutet, dass die Ausführung erst fortgesetzt wird, nachdem der Benutzer das zweite Formular geschlossen hat. Wenn das passiert, wird die Ausführung mit der nächsten Codezeile fortgesetzt, die den Fokus auf das Textfeld-Steuerlement setzt.

Versuche deinen Code wie folgt zu ändern:

private void button1_Click(object sender, EventArgs e)
{
     Form1 frm = new Form1();
     frm.ShowDialog();
     this.textBox1.Select();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X