C# 将文本框中的数字存储到C中的数组中#
我有18个文本框,它们被分成9个数字-9个百分比。 数字数组是g[],百分比数组是w[] 所以我要做的是,我想把9个文本框(textbox1,textbox2,…textbox9)中的数字存储到数组g[],另9个存储到数组w[]。 数组g[]和w[]的初始值均为零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 }; 每个文本框编号对应一个数
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();