从一个表单访问另一个表单的控件可能具有挑战性。考虑两种表单,带有 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中文网其他相关文章!