從一個表單存取另一個表單的控制項可能具有挑戰性。考慮兩個表單,帶有 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中文網其他相關文章!