首页 > 解决方案 > 如何在windows窗体中获取用户输入的文本框的名称c#

问题描述

我有超过 160 个文本框,每个文本框对应于芯片中寄存器内的值。每次从该特定文本框中按下输入时,我想将输入到文本框中的值写入相应的寄存器。由于有很多文本框 keydown 事件是不可能的每个文本框。我应该在这里做什么?如何获取用户键入数据然后按回车键的文本框的名称,以便我可以从该特定框中获取值并复制它。

标签: c#user-interfacetextboxwindows-forms-designer

解决方案


当然,您可以在表单构造函数中挂钩 keypress 事件。

public Form1()
{
    InitializeComponent();
    foreach (Control control in this.Controls)
        if (control is TextBox)
            ((TextBox)control).KeyPress += new KeyPressEventHandler(TextBox_Keypress);
                
}

private void TextBox_Keypress(object sender, KeyPressEventArgs e)
{
    var textbox = sender as TextBox;
    MessageBox.Show(textbox.Name + "has typed a key");
}

深入挖掘儿童

如果您需要在儿童中获取文本框,PsychoCoders 的回答可以为您提供帮助。

public IEnumerable<Control> GetAll(Control control, Type type)
{
    var controls = control.Controls.Cast<Control>();

    return controls.SelectMany(ctrl => GetAll(ctrl, type))
                                .Concat(controls)
                                .Where(c => c.GetType() == type);
}

并改变你的foreach喜欢;

foreach (Control control in GetAll(this, typeof(TextBox)))
{
   ...
}

推荐阅读