winforms 索引超出了表C#的范围

e7arh2l6  于 2023-06-24  发布在  C#
关注(0)|答案(1)|浏览(110)

我正在尝试创建一个应用程序,其中对于datagridview中的每一列,都会询问我想要执行的度量样本的数量。然后,它生成最大数量的样本,并根据我的表将其中一些设置为只读。输出应类似于以下内容:

请注意,我的每一行的尊重措施样本是:2、1、4、5,其中5是该示例中的最大值。
下面是我得到的代码:

nombredemesures = new int[] { };
foreach (DataGridViewRow row in dataGridView2.Rows)
{
    if (row.Cells[$"{comboBox1.Text + comboBox2.Text}DataGridViewTextBoxColumn"].Value?.ToString() is "")
    {
        row.Visible = false;
    }
    else
    {
        string result = Interaction.InputBox($"Valeur de :{row.Cells["ItemDataGridViewTextBoxColumn"].Value?.ToString()}", "Title", "Default Text");
        nombredemesures = nombredemesures.Concat(new int[] { int.Parse(result) }).ToArray();
    }
}
int max = 0;
foreach (int value in nombredemesures)
{
    if (value > max)
        max = value;
}
int k = 0;
for (int i = 1; i <= max; i++) 
{ 
    dataGridView2.Columns.Add($"Test{i}", $"Donée de mesure{i}"); 
}
var resultt = from DataGridViewRow roww in dataGridView2.Rows select roww.Index;
foreach (var i in resultt)
{
    for (int j = max;j>(nombredemesures[k]); j--)
    {
        dataGridView2.Rows[i].Cells[$"Test{j}"].Style.BackColor = System.Drawing.Color.Red;
    }
    k++;
}

不幸的是,我被告知我在数组边界之外。有人知道为什么吗?
我试着改变循环的范围,但没用,因为我还没有创建一个“measure sample0”。现在我认为这是数组的问题,但我还不确定。

i2byvkas

i2byvkas1#

它使用从零开始的索引。您正在使用基于1的索引。
你得换衣服了

for (int i = 1; i <= max; i++)

for (int i = 0; i < max; i++)

相关问题