在循环中动态获取控件名称/值

Jiale Xue - MSFT 37,946 信誉分 Microsoft 供应商
2024-03-14T07:21:52.2466667+00:00

你好

在 VS2019 WindowsFormsApp 中,使用 C#,我获得了 10 个 TextBox 输入(命名为 input_1,input_2 ...input_10)。 我正在尝试创建一个循环并获取每个控件的值。

如何动态生成控件名称,以获取循环中的值(类似于:string value = input_[i]。文本)?

我尝试了以下方法:

var input_ = new Control[10];  
for (int i = 0; i < input_.Length; i++)  
{  
    MessageBox.Show(input_[i].Text); // <-- System.NullReferenceException: 'Object reference not set to an instance of an object.'  
}  

谢谢。

编辑:我想知道是否有一种方法可以在不首先设置列表的情况下做到这一点,例如:

var textBoxs = new List<TextBox> { input_1, input_2, .............. input_x};  

Note:此问题总结整理于: Dynamically get a control name/value in loop

C#
C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
145 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 44,471 信誉分 Microsoft 供应商
    2024-03-14T09:38:29.29+00:00

    你可以尝试以下代码来获取循环中的控件名称/值。

    代码示例:

     private void button1_Click(object sender, EventArgs e)  
            {  
                List<TextBox> list=this.Controls.Cast<Control>().Where(i=>i.GetType() == typeof(TextBox)).Cast<TextBox>().ToList();  
                foreach (TextBox tb in list)  
                {  
                    listBox1.Items.Add(tb.Name+"**"+tb.Text);  
                }  
                  
            }  
    

    测试结果:

    216801-image.png

    希望这对你有所帮助。

    如果回复有帮助,请单击“接受答案”并投赞成票。

    注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助