【问题标题】:How to dynamically add integer values from textbox to a int array in C#如何将文本框中的整数值动态添加到 C# 中的 int 数组
【发布时间】:2018-05-13 14:21:31
【问题描述】:

我想创建一个带有按钮的表单,其中按钮可以创建一组组件(2 个文本框,1 个标签)。我希望将文本框中输入的值存储到一个 int 数组中。

我已经工作了这么远 按钮点击事件

 private void button1_Click(object sender, EventArgs e)
    {

        AddNewLabel();
        AddNewTextBox1();
        AddNewTextBox2();
    }

添加文本框

 public System.Windows.Forms.TextBox AddNewTextBox1()
    {
        System.Windows.Forms.TextBox txt1 = new System.Windows.Forms.TextBox();
        this.Controls.Add(txt1);
        txt1.Top = txtBoxCounter * 28;
        txt1.Left = 125;
        string txtName1 = "txtLL" + txtBoxCounter;
        txt1.Name = txtName1;
        string txtValue1 = txt1.Text;
        lowerLimit[txtBoxCounter-1] = Int32.Parse(txtValue1);
        return (txt1);


    }

添加标签

public System.Windows.Forms.Label AddNewLabel()
    {
        System.Windows.Forms.Label lbl = new System.Windows.Forms.Label();
        this.Controls.Add(lbl);
        lbl.Top = lblCounter * 28;
        lbl.Left = 15;
        lbl.Text = "Range" + lblCounter;
        lblCounter = lblCounter + 1;
        return (lbl);
    }

开始调试后

按钮点击后

【问题讨论】:

  • 为什么不创建一个包含几个文本框和一个标签的用户控件?
  • 像这样创建自己的网格控件是一个非常糟糕的主意。请改用 DataGridView。还有很多其他的。

标签: c# arrays winforms


【解决方案1】:

有几种方法可以做到这一点:您可以将您在集合中创建的TextBox 对象存储在表单上的实例变量中,或者由于文本框已经添加到this.Controls,您可以动态地遍历它们。

方法取决于您;这是使用第二种方法的示例:

var total = this.Controls
    .OfType<TextBox>
    .Sum(tb => {
        int val;
        if (int.TryParse(tb.Text, out val)) {
            return val;
        }
        return 0;
    });

注意:此方法编译时需要导入System.Linq

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多