如何基于文本框创建数组表?

时间:2016-05-21 12:27:27

标签: c# c++ winforms visual-studio

我动态创建了NxM文本框。 用户填充带有整数的文本框。 我需要使用数据创建表NxM,这些数据被填入Textboxes。 我需要它来进行矩阵计算。

我该怎么做?我可以为每个循环使用吗?

我有这个代码,它给了我NxM Textboxes:

for (int i = 0; i <= verticalCount; i++) 
        {

            if (i == verticalCount)
            {
                for (int j = 0; j < horizontalValue; j++)
                {
                    var xEnd = 100 + 80 * verticalCount; ;
                    var yEnd = 100 + 60 * j;
                    var textBoxNM = new TextBox();
                    textBoxNM.Name = string.Format("TextBox_{0}_{1}", i, j); 
                    textBoxNM.Location = new Point(xEnd, yEnd);
                    textBoxNM.Size = new System.Drawing.Size(50, 25);
                    Step2.Controls.Add(textBoxNM);

                    string end = string.Format("result = ", i + 1);
                    newLabel(end, xEnd - 60, yEnd, Step2);
                }
            }
            else
            {
                for (int j = 0; j < horizontalValue; j++) //
                {
                    var x = 20 + 80 * i;
                    var y = 100 + 60 * j;

                    if (j < horizontalValue)
                    {
                        newTextbox(x, y, Step2);
                        string nbr = string.Format("x{0}", i + 1);
                        newLabel(nbr, x + 50, y, Step2);
                    }
                }
            }
        }

我有用c ++编写的代码,我正在尝试创建它的Windows应用程序。

谢谢!

编辑:

public void button2_Click(object sender, EventArgs e)
    {
        var verticalCount = Convert.ToInt32(comboBox1.Text);
        var horizontalValue = Convert.ToInt32(comboBox2.Text);

        int[,] tbArray;
        tbArray = new int[,] { { horizontalValue , verticalCount } };

        foreach (Control ShouldBeTextBox in this.Controls)
        {
            if (ShouldBeTextBox is TextBox)
            {
                if (ShouldBeTextBox != null)
                {
                    int x = horizontalValue;
                    int y = verticalCount;
                    var tag = ShouldBeTextBox.Tag as int[];
                    string a = Convert.ToString(tag);
                    MessageBox.Show(a);
                    tbArray[tag[x], tag[y]] = Convert.ToInt32(ShouldBeTextBox.Text);
                }
                else
                    MessageBox.Show("Fill all parameters");
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

我真的建议您将WPF用于与UI相关的任何新功能,因为与WinForms相比,它简化了UI自定义。通过使用名为DataTemplates的东西,您可以告诉WPF如何将您的数据模型表示为UI元素。这意味着您可以使WPF根据需要创建尽可能多的文本框。您还可以通过名为Binding的机制接收每个数据模型实例的值更新。最后,一个名为ItemsPanelTemplate的机制允许您控制项目的布局。您可以使用网格作为ListView控件的面板模板。

答案 1 :(得分:0)

您可以做的是在创建文本框时将矩阵坐标作为标记。将i和j发送到newTextbox方法并执行类似

的操作
theNewTextBox.Tag = new int[] {i, j};

稍后当你需要在矩阵数组中获取值时,可以执行以下操作:

foreach(Control c in Step2.Controls)
{
   Textbox tb = c as TextBox;
   if (tb != null)
   {
       var tag = tb.Tag as int[];
       theMatrixArray[tag[0], tag[1]] = tb.Text; // Or parse it to int if you can't have it in text
   }
}

希望这会有所帮助。祝你好运!