gpt4 book ai didi

c# - 如何访问另一个表单的表单控件?

转载 作者:可可西里 更新时间:2023-11-01 08:33:02 26 4
gpt4 key购买 nike

我有两个 Form 类,其中一个有一个 ListBox。我需要 ListBoxSelectedIndex 属性的 setter,我想从第二个 Form 调用它。

目前我正在做以下事情:

表格 1

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

表格 2

private ControlForm mainForm; // form 1

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

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

这是最好的方法吗?

最佳答案

让他们成为单例并不是一个完全坏的主意,但我个人不喜欢那样做。我宁愿将一个引用传递给另一种形式。这是一个例子。

Form1 触发 Form2 打开。 Form2 具有重载的构造函数,它将调用表单作为参数并提供对 Form2 成员的引用。这解决了通信问题。例如,我在 Form1 中将 Label 属性公开为 public,在 Form2 中对其进行了修改。

通过这种方法,您可以通过不同的方式进行交流。

Download Link for Sample Project

//你的 Form1

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

private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
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;
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{

}

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

alt text
(来源:ruchitsurati.net)

alt text
(来源:ruchitsurati.net)

关于c# - 如何访问另一个表单的表单控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4822980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com