我想从任意形式更新TextBox
。你能建议一个这样做的方法吗?
答案 0 :(得分:3)
基本上与你对另一个对象做任何事情的方式相同。您需要引用另一个表单,如果它是一个不同的类型,它必须将您感兴趣的文本框作为属性公开,或者有一个方法来设置文本。例如,你可能有:
public class FirstForm : Form
{
private TextBox nameInput;
public TextBox NameInput { get { return nameInput; } }
...
}
public class SecondForm : Form
{
private TextBox otherNameInput;
private FirstForm firstForm;
public void CopyValue()
{
firstForm.NameInput.Text = otherNameInput.Text;
}
}
或者将文本框的责任放在第一种形式:
public class FirstForm : Form
{
private TextBox nameInput;
public string Name
{
get { return nameInput.Text; }
set { nameInput.Text = value; }
}
...
}
public class SecondForm : Form
{
private TextBox otherNameInput;
private FirstForm firstForm;
public void CopyValue()
{
firstForm.Name = otherNameInput.Text;
}
}
还有其他各种方法可以给猫皮肤,但这些是最常见的。如何将FirstForm
引用到SecondForm
中会有所不同 - 它可能会传递到SecondForm
的构造函数中,也可能由SecondForm
本身创建。这将取决于您的其他UI。
请注意,这假设两个表单使用相同的UI线程。为不同的窗口设置不同的UI线程是可能的(但相对不常见),在这种情况下,您需要使用Control.Invoke
/ BeginInvoke
。
答案 1 :(得分:0)
更改类并覆盖表单的构造函数以传入所需的数据。在构造函数存储中,传入的varialble传入成员变量
答案 2 :(得分:0)
你应该听取Jon的建议。另一种方式可能就像这样脏:
// Bad practice
foreach (var child in theOtherForm.Controls){
if(child.Name == '_otherControlName')
{
(child as TextBox).Text = _thisTextBox.text;
}
}
您可能还需要检查某些类型和某些面板的子控件。