Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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#_.net_Winforms_Textbox - Fatal编程技术网

C# 填充文本框';将值转换为特定的文本框

C# 填充文本框';将值转换为特定的文本框,c#,.net,winforms,textbox,C#,.net,Winforms,Textbox,我有三个文本框1、文本框2和文本框3,还有一个主文本框4和按钮1,当它被点击时,它会将文本框4的值插入到被点击的(被选中/被选中/被点击的一个)文本框中。此代码使用相同的值填充所有文本框 private void button1_Click(object sender, EventArgs e) { TextBox[] array = new TextBox[3] { textBox1, textBox2, textBox3 }; for (int

我有三个文本框1、文本框2和文本框3,还有一个主文本框4和按钮1,当它被点击时,它会将文本框4的值插入到被点击的(被选中/被选中/被点击的一个)文本框中。此代码使用相同的值填充所有文本框

    private void button1_Click(object sender, EventArgs e)
    {
        TextBox[] array = new TextBox[3] { textBox1, textBox2, textBox3 };
        for (int i = 0; i < 3; i++)
        {
            if (array[i].Focus())
            {
                array[i].Text = textBox4.Text;
            }
        }

    }
private void按钮1\u单击(对象发送者,事件参数e)
{
TextBox[]数组=新的TextBox[3]{textBox1,textBox2,textBox3};
对于(int i=0;i<3;i++)
{
if(数组[i].Focus())
{
数组[i].Text=textBox4.Text;
}
}
}

但是我希望它获取TextBox4的值并插入到我单击的TextBox2中。像这样的illu


将3个目标
文本框的
单击
事件注册到同一个处理程序:

public Form1()
{
    InitializeComponent();

    textBox1.Click += TransportValueEvent_Click;
    textBox2.Click += TransportValueEvent_Click;
    textBox3.Click += TransportValueEvent_Click;
}
在处理程序内部,将
发送者
(这将是您单击的文本框)作为
文本框
,并写入值:

private void TransportValueEvent_Click(object sender, EventArgs e)
{
    (sender as TextBox).Text = textBox4.Text;
}
现在你不再需要按钮了。单击该值后,该值将立即写入正确的文本框

如果
textBox4
为空,您可能希望避免删除,那么您只能在以下情况下更新该值:

private void TransportValueEvent_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrWhiteSpace(textBox4.Text))
    {
        (sender as TextBox).Text = textBox4.Text;
    }
}

最好改变为那些
TextBox
控件设置值的方式,并考虑另一个UI,但无论如何,如果您希望保持原样,我将分享一个想法,以满足您在问题中描述的要求

在表单中定义一个字段,
TextBox selectedTextBox
,然后处理
输入这3个
TextBox
控件的事件,并在处理程序集中
选择的TextBox=(TextBox)sender
。然后在
中点击按钮的事件处理程序,检查
selectedTextBox
是否为空,然后设置
selectedTextBox.Text=textBox4.Text

TextBox selectedTextBox;
public Form1()
{
    InitializeComponent();

    textBox1.Enter += TextBox_Enter;
    textBox2.Click += TextBox_Enter;
    textBox3.Click += TextBox_Enter;

    button1.Click += button1_Click;
}

void TextBox_Enter(object sender, EventArgs e)
{
    selectedTextBox = (TextBox)sender;
}
void button1_Click(object sender, EventArgs e)
{
    if(selectedTextBox!=null)
        selectedTextBox.Text = textBox4.Text;
}

确保不要两次附加事件处理程序,因此要附加事件处理程序,请使用代码编辑器或设计器,而不是两者。

处理每个文本框的单击事件,并为单击的文本框对象设置类级别的成员。单击按钮时,只需使用该成员更改文本框值。如果使用事件处理程序中的
object sender
参数,则只需对所有3个文本框使用一个click处理程序即可完成此操作。focus()是否将焦点设置为控件?@Hursey这是肯定的。单击按钮时,按钮将是活动控件,而不是文本框。@CrownFord您可以在我的第一条评论中尝试我的建议。@Reza Aghaei以我想要的方式工作。谢谢