Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文本框中的数字存储到C中的数组中#_C#_.net_Arrays - Fatal编程技术网

C# 将文本框中的数字存储到C中的数组中#

C# 将文本框中的数字存储到C中的数组中#,c#,.net,arrays,C#,.net,Arrays,我有18个文本框,它们被分成9个数字-9个百分比。 数字数组是g[],百分比数组是w[] 所以我要做的是,我想把9个文本框(textbox1,textbox2,…textbox9)中的数字存储到数组g[],另9个存储到数组w[]。 数组g[]和w[]的初始值均为零 int[] g = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int[] w = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 每个文本框编号对应一个数

我有18个文本框,它们被分成9个数字-9个百分比。 数字数组是g[],百分比数组是w[]

所以我要做的是,我想把9个文本框(textbox1,textbox2,…textbox9)中的数字存储到数组g[],另9个存储到数组w[]。 数组g[]和w[]的初始值均为零

 int[] g = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 int[] w = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
每个文本框编号对应一个数组索引,例如:

textbox2 - g[1]
textbox10 - w[0]
因此,如果要在textbox1中输入10,在textbox10中输入30,则应该如下所示

int[] g = new int[] { 10, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] w = new int[] { 30, 0, 0, 0, 0, 0, 0, 0, 0 };
这里重要的是,textbox4可能没有输入值,因此该值应保持为0

使用最少数量的代码和变量声明,最好的方法是什么

编辑:这是我到目前为止尝试过的,但这似乎不是一个好方法+我得到一个错误

无法将“System.Windows.Forms.TextBox”类型的对象强制转换为 “System.IConvertible”

private void按钮1\u单击(对象发送者,事件参数e)
{
int[]g=新的int[]{0,0,0,0,0,0,0,0};
int[]w=新的int[]{0,0,0,0,0,0,0,0};
List gList=新列表();
Add(新文本框{Text=textBox1.Text});
Add(新文本框{Text=textBox2.Text});
添加(新文本框{Text=textBox3.Text});
Add(新文本框{Text=textBox4.Text});
添加(新文本框{Text=textBox5.Text});
Add(新文本框{Text=textBox6.Text});
Add(新文本框{Text=textBox7.Text});
Add(新文本框{Text=textBox8.Text});
Add(新文本框{Text=textBox9.Text});
List wList=新列表();
添加(新文本框{Text=textBox10.Text});
添加(新文本框{Text=textBox11.Text});
添加(新文本框{Text=textBox12.Text});
添加(新文本框{Text=textBox13.Text});
添加(新文本框{Text=textBox14.Text});
添加(新文本框{Text=textBox15.Text});
添加(新文本框{Text=textBox16.Text});
添加(新文本框{Text=textBox17.Text});
添加(新文本框{Text=textBox18.Text});
对于(int i=0;i<9;i++)
{
g[i]=转换为32(gList[i]);
}
对于(int i=0;i<9;i++)
{
w[i]=转换为32(wList[i]);
}}

我不知道你的确切意思,但最简单的方法是创建一个文本框数组。2个文本框数组,以便更轻松地操作它们,然后将每个值都放入数组中。 因此,使用for循环可以遍历数组来复制它们

for (int i = 0; i <= arrayMaxIndex; i++) {
    arrayNumbers[i] = arrayTxtBoxNum[i];
    // same for the other one

for(int i=0;i您正在创建新的文本框来保存值,因此您的强制转换是错误的

for (int i = 0; i < 9; i++) 
{
        //Wrong, it's a textbox!
        g[i] = Convert.ToInt32(gList[i]);
        //should be
        g[i] = Convert.ToInt32(gList[i].Text);
}

假设您的表单中有18个文本框,如您所述

步骤1:将所有文本框放入2个列表中以便于访问,这样就有了
TextBox
的数组,并为相应的数组提供了匹配的索引

var valueTextBoxes = form.Controls.OfType<TextBox>().Take(9);    
var percentageTextBoxes = form.Controls.OfType<TextBox>().Take(9);

步骤3:如果需要,在相应的数组上用常规的
更新所有文本框。

我想你需要提供更多信息。你使用的是WPF还是WinForms?你的textbox变量名是什么?你能发布你迄今为止尝试过的代码吗?我使用的是WinForms,变量名是textbox1,textBox2,…textBox18。我不能nd将textBox1.text存储到g[1]的好方法这就是问题所在。示例代码不接受表单的元素,而是创建未在UI中显示的新文本框。。。
var valueTextBoxes = form.Controls.OfType<TextBox>().Take(9);    
var percentageTextBoxes = form.Controls.OfType<TextBox>().Take(9);
var valueTextBoxes = form.Controls.OfType<TextBox>().Take(9);    
var percentageTextBoxes = form.Controls.OfType<TextBox>().Take(9);
int value = 0; // for TryParse
g = valueTextBoxes
      .Select((t,index) => int.TryParse(t.Text, out value) ? value : g[index])
      .ToArray();

w = percentageTextBoxes
      .Select((t,index) => int.TryParse(t.Text, out value) ? value : w[index])
      .ToArray();