C# 不使用输入控件更新文本框
我有一个windows窗体应用程序,它由一组控件组成,但更具体地说,是两个C# 不使用输入控件更新文本框,c#,winforms,textbox,C#,Winforms,Textbox,我有一个windows窗体应用程序,它由一组控件组成,但更具体地说,是两个文本框。其中一个是只读的。只读textBox值应与用户可以输入的textBox相同 因此,如果用户在textBoxA中键入“Hello World”,则textBoxB中的值应自动更新为“Hello World” 我该怎么做呢?我知道我只需要设置文本值,我只是不确定我将代码放在哪里,以便在单击按钮或沿着这些行执行时自动完成它 TextChanged事件: private void textBox1_TextChanged(
文本框。其中一个是只读的。只读textBox
值应与用户可以输入的textBox
相同
因此,如果用户在textBox
A中键入“Hello World”,则textBox
B中的值应自动更新为“Hello World”
我该怎么做呢?我知道我只需要设置文本值,我只是不确定我将代码放在哪里,以便在单击按钮或沿着这些行执行时自动完成它 TextChanged事件:
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox2.Text = textBox1.Text;
}
这应该满足您的需要:
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox2.Text = textBox1.Text;
}
听起来你想要的是:
writableTextBox.TextChanged += delegate {
readonlyTextBox.Text = writableTextBox.Text;
};
换句话说,当一个文本框中的文本发生变化时,更新另一个文本框。这将使用事件。如果您希望textBoxA的文本一经更改(即在用户按下textBoxA中的一个键后立即)textBoxB即被更新,则事件为TextChanged:
this.textBoxA.TextChanged += new System.EventHandler(this.textBoxA_TextChanged);
private void textBoxA_TextChanged(object sender, EventArgs e)
{
textBoxB.Text = textBoxA.Text;
}
如果您希望仅在用户完成编辑textBoxA后更新textBoxB中的文本,则应使用Leave事件:
this.textBoxA.Leave += new System.EventHandler(this.textBoxA_Leave);
private void textBoxA_Leave(object sender, EventArgs e)
{
textBoxB.Text = textBoxA.Text;
}
比事件方法更短(更好?)的是使用winform的数据绑定。只需在调用InitializeComponents
之后使用此选项:
readonlyTextBox.DataBindings.Add("Text", writableTextBox, "Text");
Windows窗体应用程序?我不明白jQuery和它有什么关系?我不明白“Windows窗体”是如何从你的问题中产生的。@HenkHolterman:“我有一个窗体应用程序”是一个提示,尽管我同意它本可以更清楚。@HenkHolterman:这就是为什么我只说它是一个提示:)我想大多数人会特别指出“web”作为web表单应用程序的一部分,而不仅仅是将其称为“表单应用程序”。另外,不要忘记将事件注册到您的文本框中。这是一个不错的单行解决方案。happyguy要理解什么是事件并不是最简单的:)@Leito:你是在假设OP还不知道事件吗?我是在假设,是的TextChanged
是我在学习事件时遇到的第一个事件之一,而且似乎合乎逻辑。但我可能错了:)@Leito:我不认为这是一个核心事件。如果OP询问点击按钮时如何反应,我认为这是一个更清晰的提示:)