将 TextBox 的值填充到特定的 Textbox
Populate TextBox's value to a specific Textbox
我有三个 TextBoxe1、TextBoxe2 和 TextBoxe3 以及一个主 TextBox4 和 Button1,当它被单击时,它会将 TextBox4 的值插入到被单击的(chosen/selected/clicked 一个)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;
}
}
}
但我希望它获取 TextBox4 的值并插入到我单击的 TextBox2 中。喜欢这个插画:
将 3 个目标 TextBox
的 Click
事件注册到同一个处理程序:
public Form1()
{
InitializeComponent();
textBox1.Click += TransportValueEvent_Click;
textBox2.Click += TransportValueEvent_Click;
textBox3.Click += TransportValueEvent_Click;
}
在处理程序中获取 sender
(这将是您单击的文本框)作为 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;
}
}
最好改变你为那些 TextBox
控件设置值的方式并考虑另一个 UI,但无论如何,如果你想保持原样,我会分享满足您在问题中描述的要求的想法。
在表单中定义一个字段,TextBox selectedTextBox;
,然后处理这 3 个 TextBox
控件和处理程序集 selectedTextBox = (TextBox)sender
的 Enter
事件。然后在按钮的 Click
事件处理程序中,检查 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;
}
确保您没有附加事件处理程序两次,因此要附加事件处理程序,请使用代码编辑器或设计器,而不是同时使用它们。
我有三个 TextBoxe1、TextBoxe2 和 TextBoxe3 以及一个主 TextBox4 和 Button1,当它被单击时,它会将 TextBox4 的值插入到被单击的(chosen/selected/clicked 一个)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;
}
}
}
但我希望它获取 TextBox4 的值并插入到我单击的 TextBox2 中。喜欢这个插画:
将 3 个目标 TextBox
的 Click
事件注册到同一个处理程序:
public Form1()
{
InitializeComponent();
textBox1.Click += TransportValueEvent_Click;
textBox2.Click += TransportValueEvent_Click;
textBox3.Click += TransportValueEvent_Click;
}
在处理程序中获取 sender
(这将是您单击的文本框)作为 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;
}
}
最好改变你为那些 TextBox
控件设置值的方式并考虑另一个 UI,但无论如何,如果你想保持原样,我会分享满足您在问题中描述的要求的想法。
在表单中定义一个字段,TextBox selectedTextBox;
,然后处理这 3 个 TextBox
控件和处理程序集 selectedTextBox = (TextBox)sender
的 Enter
事件。然后在按钮的 Click
事件处理程序中,检查 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;
}
确保您没有附加事件处理程序两次,因此要附加事件处理程序,请使用代码编辑器或设计器,而不是同时使用它们。