我动态创建了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");
}
}
}
答案 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
}
}
希望这会有所帮助。祝你好运!