是否可以让标签显示当前活动文本框中的文本?
Is it possible to have a label display text from the current active textbox?
我正在 Visual Studio 2019 年制作一个 C# Windows Form 项目。我目前有 40 个用户必须填写的文本框。这些文本框非常小,这就是为什么在顶部该程序我创建了一个大标签。我想知道是否可以在 C# 中显示用户在此标签框中填写的活动文本框中的文本。
我不确定这条信息是否会对这个过程有任何影响,但是一旦用户在当前所说的文本框中填写了正确的信息,它就会自动禁用它并继续进行下一个。
举个例子:
只要用户在任何这些文本框中输入任何内容,活动文本框文本就会显示在顶部(在标签中)。
在表单的构造函数中,为所有文本框的 TextChanged
和 Enter
事件添加事件处理程序。它应该看起来像这样:
public Form1()
{
InitializeComponent();
foreach (var textBox in this.Controls.OfType<TextBox>())
{
textBox.TextChanged += TextBoxes_TextChanged;
textBox.Enter += TextBoxes_TextChanged;
}
}
请注意,this.Controls.OfType<TextBox>()
只有在将文本框直接放置在窗体上时才有效。如果它们被放置在另一个容器中(例如,GroupBox 或 Panel),您可以使用以下代替:
theOtherContainer.Controls.OfType<TextBox>()
然后,您可以使用以下事件处理程序更改标签的文本:
private void TextBoxes_TextChanged(object sender, EventArgs e)
{
var textBox = (TextBox)sender;
label1.Text = textBox.Text;
}
您还可以为 Leave
事件添加事件处理程序,以便在光标离开某个文本框时清除文本。为此,只需在上面的 foreach
循环中添加以下行:
textBox.Leave += (o, e) => label1.Text = string.Empty;
您可以使用 TextChanged
事件来完成此操作。第一个参数将是触发事件的 TextBox
,因此您可以将其从 object
转换为 TextBox
.
private void TextBox_TextChanged(object sender, EventArgs e)
{
TextBox txt = sender as TextBox;
label.Text = txt.Text;
}
您可以使用设计器将所有 TextBox
实例连接到一个事件,方法是一次选择所有实例,然后转到其属性的事件页面 window。
您可以使用相同的事件处理程序和 Enter
事件,这样当您输入下一个 TextBox
时,Label
会发生变化。
使用这种方法需要注意的一件事是 TextChanged
会触发任何导致 TextBox.Text
发生变化的事件,而不仅仅是键盘输入。
我正在 Visual Studio 2019 年制作一个 C# Windows Form 项目。我目前有 40 个用户必须填写的文本框。这些文本框非常小,这就是为什么在顶部该程序我创建了一个大标签。我想知道是否可以在 C# 中显示用户在此标签框中填写的活动文本框中的文本。 我不确定这条信息是否会对这个过程有任何影响,但是一旦用户在当前所说的文本框中填写了正确的信息,它就会自动禁用它并继续进行下一个。
举个例子:
只要用户在任何这些文本框中输入任何内容,活动文本框文本就会显示在顶部(在标签中)。
在表单的构造函数中,为所有文本框的 TextChanged
和 Enter
事件添加事件处理程序。它应该看起来像这样:
public Form1()
{
InitializeComponent();
foreach (var textBox in this.Controls.OfType<TextBox>())
{
textBox.TextChanged += TextBoxes_TextChanged;
textBox.Enter += TextBoxes_TextChanged;
}
}
请注意,this.Controls.OfType<TextBox>()
只有在将文本框直接放置在窗体上时才有效。如果它们被放置在另一个容器中(例如,GroupBox 或 Panel),您可以使用以下代替:
theOtherContainer.Controls.OfType<TextBox>()
然后,您可以使用以下事件处理程序更改标签的文本:
private void TextBoxes_TextChanged(object sender, EventArgs e)
{
var textBox = (TextBox)sender;
label1.Text = textBox.Text;
}
您还可以为 Leave
事件添加事件处理程序,以便在光标离开某个文本框时清除文本。为此,只需在上面的 foreach
循环中添加以下行:
textBox.Leave += (o, e) => label1.Text = string.Empty;
您可以使用 TextChanged
事件来完成此操作。第一个参数将是触发事件的 TextBox
,因此您可以将其从 object
转换为 TextBox
.
private void TextBox_TextChanged(object sender, EventArgs e)
{
TextBox txt = sender as TextBox;
label.Text = txt.Text;
}
您可以使用设计器将所有 TextBox
实例连接到一个事件,方法是一次选择所有实例,然后转到其属性的事件页面 window。
您可以使用相同的事件处理程序和 Enter
事件,这样当您输入下一个 TextBox
时,Label
会发生变化。
使用这种方法需要注意的一件事是 TextChanged
会触发任何导致 TextBox.Text
发生变化的事件,而不仅仅是键盘输入。