将TextBox的值填充到特定的文本框中

问题描述 投票:2回答:2

我有三个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

c# .net winforms textbox
2个回答
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;
}

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


2
投票

将3个目标Clickes的TextBox事件注册到同一个处理程序:

public Form1()
{
    InitializeComponent();

    textBox1.Click += TransportValueEvent_Click;
    textBox2.Click += TransportValueEvent_Click;
    textBox3.Click += TransportValueEvent_Click;
}

在处理程序内部获取sender(它将是您单击的TextBox)作为TextBox并写入值:

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

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

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

private void TransportValueEvent_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrWhiteSpace(textBox4.Text))
    {
        (sender as TextBox).Text = textBox4.Text;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.