将TextBox的值填充到特定的Textbox

时间:2018-09-11 07:39:10

标签: c# .net winforms textbox

我有三个TextBoxe1,TextBoxe2和TextBoxe3,以及一个主TextBox4和Button1,当单击它时,它将把TextBox4的值插入到单击的(选定的/选定的/单击的)TextBox中。此代码使用相同的值填充所有TextBox。

    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;
            }
        }

    }

enter image description here

但是我希望它采用TextBox4的值并将其插入到我单击过的TextBox2中。像这样的错觉。

enter image description here

2 个答案:

答案 0 :(得分:2)

将3个目标Click的{​​{1}}事件注册到同一处理程序:

TextBox

在处理程序中,将public Form1() { InitializeComponent(); textBox1.Click += TransportValueEvent_Click; textBox2.Click += TransportValueEvent_Click; textBox3.Click += TransportValueEvent_Click; } (将是您单击的TextBox)作为sender并写入值:

TextBox

现在您不再需要该按钮。该值将在您单击后立即写入正确的TextBox中。

如果private void TransportValueEvent_Click(object sender, EventArgs e) { (sender as TextBox).Text = textBox4.Text; } 为空,您可能想避免删除,那么只有在以下情况下才可以更新值:

textBox4

答案 1 :(得分:2)

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

TextBox selectedTextBox;格式定义一个字段,然后处理这3个Enter控件中的TextBox事件,并在处理程序集selectedTextBox = (TextBox)sender中进行处理。然后在按钮的Click事件处理程序中,检查selectedTextBox是否不为null,然后设置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;
}

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