我在控制文本框时遇到问题。我需要更改文本框所在的Form1.cs外部的值,我已找到此代码段。
public void UpdateText(string newValue)
{
torrent_name0.Text = newValue;
}
这让我理论上可以控制Form1.cs之外的文本框,但是问题出现了,每次我想访问它时,我都会创建一个新的Form1实例,而不是使用旧的实例并刷新它。
Form1 frm = new Form1();
frm.UpdateText("aaaaaaaaaaaa");
frm.Show();
我错过了什么吗?有一个更好的方法吗?我已经尝试了多种方法来更新新表单,但无处可去。
答案 0 :(得分:1)
在这种情况下,您可以将方法中的form实例作为参数传递,并进行类似
的更改public void UpdateText(string newValue, Form1 frm)
{
frm.torrent_name0.Text = newValue;
}
答案 1 :(得分:1)
Bokker,
您必须引用所有内容所引用的单数形式。
如果这是一个子表单,那么就像Aybe所评论的那样,创建一个主表单的公共成员并为其命名。
Public Form myForm1;
您可能有一些事件需要启动Form1 ...
按钮单击,菜单项,工具栏项等。在该事件中,您将必须检查表单是否存在并在需要时创建。
private SomeEvent() {
if (myForm1 == null)
{
myForm1 = new Form1();
myForm1.Show(this);
}
myForm1.UpdateText("some text");
}
或者,只要在尝试myForm1.UpdateText()之前创建表单,就可以在Form Load事件中创建表单。 如果您遵循这个范例,那么您将创建myForm1作为主窗体的一部分,最佳实践表明您还应该在主窗体Closing Event中处理该窗体。
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (myForm1 != null)
{
myForm1.Close();
myForm1.Dispose();
}
}
这一切都是我的头脑,所以它可能并不完美。