Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不使用输入控件更新文本框_C#_Winforms_Textbox - Fatal编程技术网

C# 不使用输入控件更新文本框

C# 不使用输入控件更新文本框,c#,winforms,textbox,C#,Winforms,Textbox,我有一个windows窗体应用程序,它由一组控件组成,但更具体地说,是两个文本框。其中一个是只读的。只读textBox值应与用户可以输入的textBox相同 因此,如果用户在textBoxA中键入“Hello World”,则textBoxB中的值应自动更新为“Hello World” 我该怎么做呢?我知道我只需要设置文本值,我只是不确定我将代码放在哪里,以便在单击按钮或沿着这些行执行时自动完成它 TextChanged事件: private void textBox1_TextChanged(

我有一个windows窗体应用程序,它由一组控件组成,但更具体地说,是两个
文本框。其中一个是只读的。只读
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询问点击按钮时如何反应,我认为这是一个更清晰的提示:)