【问题标题】:Store values for matrix from winform C#从 winform C# 存储矩阵的值
【发布时间】:2014-07-29 01:55:32
【问题描述】:

如何将 winforms 中文本框中的值存储到矩阵中。我从文本框中获取值并将它们转换为 int,现在我想将它们存储在二维数组中。

int m11 = Convert.ToInt16(textbox.Text);
int m12 = Convert.ToInt16(textbox.Text);
int m13 = Convert.ToInt16(textbox.Text);

我可以将它们存储在一维数组列表中,但是如何将它们存储在二维数组中,我必须使用任何 for 循环

List<Int[]> lstArray = new List<Int[]>();
int[] arr = new int[10];
arr[0] = m11;
arr[1] = m12;
arr[2] = m13;
lstArray.Add(arr);
int[,] matrixValues = new int[10,10];

【问题讨论】:

  • 抱歉,这有点不清楚。矩阵中的所有元素是否只有一个值?你的矩阵总是 10x10 吗?
  • 矩阵输入最好使用dataGridView

标签: c# arrays winforms


【解决方案1】:

给文本框命名,如txt_0_0, txt_0_1,..txt_0_9, txt_1_0, txt_1_1,.. txt_1_9 ...n

文本框应该这样创建

txt_0_0  txt_1_0  txt_2_0  txt_3_0 txt_4_0  
txt_0_1  txt_1_1  txt_2_1  txt_3_1 txt_4_1  
txt_0_2  txt_1_2  txt_2_2  txt_3_2 txt_4_2  
txt_0_3  txt_1_3  txt_2_3  txt_3_3 txt_4_3  
txt_0_4  txt_1_4  txt_2_4  txt_3_4 txt_4_4  

然后像这样创建一个循环

string txtName = string.Empty;
int[,] aVal = new int[10, 10];
for (int i = 0; i < 10; i++)
{
   for (int x = 0; x < 10; x++)
   {
      txtName = String.Format("txt_{0}_{1}", i, x);
      string sVal = ((TextBox)this.Controls[txtName]).Text
      int iVal = 0;
      if (int.TryParse(sVal, out iVal))
          aVal[i][x] = iVal;
   }
}

【讨论】:

  • 我尝试了它的工作,但是对于每一秒的值,即我在文本框中给出的每一秒值,异常出现在“string sVal = ((TextBox)this.Controls[txtName]).Text " 异常是对象引用未设置为对象的实例。我在所有文本框中都给出了值,但是为什么会出现这个异常
  • 如果您的文本框的值包含任何非数字字符,那么即使文本框为空,它也不会转换为 int 数据类型,那么它可能会引发异常。
  • @Sirisha 确保文本框存在于您的表单中,并将名称存储在 txtName 中。出错时txtName的值是多少?
  • 我的错误是我没有正确命名文本框我能够用你的代码做到这一点非常感谢
猜你喜欢
  • 2012-12-20
  • 2011-03-29
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多