首頁 >後端開發 >C++ >如何在 C# 中從另一個表單存取和修改表單控制項?

如何在 C# 中從另一個表單存取和修改表單控制項?

Barbara Streisand
Barbara Streisand原創
2025-01-07 13:41:41997瀏覽

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

從另一個表單存取表單控制項

問題

從一個表單存取另一個表單的控制項可能具有挑戰性。考慮兩個表單,帶有 ListBox 的「表單 1」和需要存取其 SelectedIndex 屬性的「表單 2」。

最佳實踐解決方案

不要使用單例模式,而是考慮傳遞引用從一種形式到另一種形式。這允許它們之間直接通信。

範例

Form1中:

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

Form2中:

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

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

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

透過傳遞的替代解決方案參考

另一種方法是將引用從Form1 傳遞到Form2,允許Form2 修改Form1 的Label 控制項的LabelText 屬性:

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; }
    }
}
// ...

表格2:

// ...
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)
    {
        // ...
    }
}
// ...

以上是如何在 C# 中從另一個表單存取和修改表單控制項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn