Heim >Backend-Entwicklung >C++ >Wie kann ich in C# auf Formularsteuerelemente aus einem anderen Formular zugreifen und diese ändern?

Wie kann ich in C# auf Formularsteuerelemente aus einem anderen Formular zugreifen und diese ändern?

Barbara Streisand
Barbara StreisandOriginal
2025-01-07 13:41:41999Durchsuche

How Can I Access and Modify Form Controls from Another Form in C#?

Zugriff auf ein Formularsteuerelement von einem anderen Formular aus

Problem

Der Zugriff auf Steuerelemente von einem Formular in einem anderen kann eine Herausforderung sein. Betrachten Sie zwei Formulare, „Form 1“ mit einer ListBox und „Form 2“, das auf seine SelectedIndex-Eigenschaft zugreifen muss.

Best-Practice-Lösung

Anstatt ein Singleton-Muster zu verwenden, sollten Sie die Übergabe einer Referenz in Betracht ziehen von einer Form zur anderen. Dies ermöglicht eine direkte Kommunikation zwischen ihnen.

Beispiel

In Form1:

// ...
public int MyListBoxSelectedIndex
{
    set { lsbMyList.SelectedIndex = value; }
}
// ...

In Form2:

// ...
private Form1 mainForm; // Reference to "Form 1"

public AddNewObjForm()
{
    InitializeComponent();
    mainForm = new ControlForm();           
}

public void SomeMethod()
{
    mainForm.MyListBoxSelectedIndex = -1;
}
// ...

Alternative Lösung mit Bestehen von a Referenz

Ein anderer Ansatz besteht darin, eine Referenz von Form1 an Form2 zu übergeben, wodurch Form2 die LabelText-Eigenschaft des Label-Steuerelements von Form1 ändern kann:

Form1:

// ...
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2(this); // Pass reference to Form2
        frm.Show();
    }

    public string LabelText
    {
        get { return Lbl.Text; }
        set { Lbl.Text = value; }
    }
}
// ...

Form2:

// ...
public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private Form1 mainForm = null;
    public Form2(Form callingForm)
    {
        mainForm = callingForm as Form1; // Cast to Form1
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        this.mainForm.LabelText = txtMessage.Text; // Modify LabelText
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // ...
    }
}
// ...

Das obige ist der detaillierte Inhalt vonWie kann ich in C# auf Formularsteuerelemente aus einem anderen Formular zugreifen und diese ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn