索引超出了数组C#.net的界限
这是我的密码。。 我有一个大小为[5]的数组。我在这个数组中添加了5个值,然后删除了这些值。现在我的数组只有一个值。如果我将另一个值添加到此数组,则表明错误索引超出了数组的界限。我的代码不完全正确,但这有助于您尝试使用此列表 试试这个索引超出了数组C#.net的界限,c#,C#,这是我的密码。。 我有一个大小为[5]的数组。我在这个数组中添加了5个值,然后删除了这些值。现在我的数组只有一个值。如果我将另一个值添加到此数组,则表明错误索引超出了数组的界限。我的代码不完全正确,但这有助于您尝试使用此列表 试试这个 int i = 0; string[] AbDates = new string[5]; private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
int i = 0;
string[] AbDates = new string[5];
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
string dt = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
if (string.IsNullOrEmpty(dt))
{
}
else
{
if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor == Color.Red)
{
if (MessageBox.Show("Do you want to UnMark this ?", "UnMark", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
{
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.White;
dt = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
AbDates = AbDates.Where(val => val != dt).ToArray();
i--;
}
}
else
{
if (MessageBox.Show("Do you want to Mark this As Absent?", "Absent", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
{
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Red;
dt = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
//MessageBox.Show(i.ToString());
AbDates[i] = dt;
i++;
}
}
}
}
inti=0;
List AbDates=新列表();
私有void dataGridView1_CellClick(对象发送者,DataGridViewCellEventArgs e)
{
字符串dt=dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
if(string.IsNullOrEmpty(dt))
{
}
其他的
{
如果(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor==Color.Red)
{
if(MessageBox.Show(“是否要取消此标记?”,“取消标记”,MessageBoxButtons.YesNo,MessageBoxIcon.Warning)=DialogResult.No)
{
}
其他的
{
dataGridView1.Rows[e.RowIndex]。单元格[e.ColumnIndex]。Style.BackColor=Color.White;
dt=dataGridView1.Rows[e.RowIndex]。单元格[e.ColumnIndex]。Value.ToString();
AddRange(AbDates.Where(val=>val!=dt.ToList());
我--;
}
}
其他的
{
if(MessageBox.Show(“是否要将此标记为不存在?”,“不存在”,MessageBoxButtons.YesNo,MessageBoxIcon.Warning)=DialogResult.No)
{
}
其他的
{
dataGridView1.Rows[e.RowIndex]。单元格[e.ColumnIndex]。Style.BackColor=Color.Red;
dt=dataGridView1.Rows[e.RowIndex]。单元格[e.ColumnIndex]。Value.ToString();
//Show(i.ToString());
AbDates.Add(dt);
i++;
}
}
}
您正在这里创建一个新数组,它比原始数组小(前提是dt的值在旧数组中)
正如Co.Aden所说,为什么不使用列表?使用列表而不是数组请正确格式化您的代码。您应该修改您的,而不是发布带有代码的新代码。另外,请只发布您代码的相关部分,这样其他人就不必浪费数小时来弄清楚您的逻辑,而且,这是您可以调试的ed easilyan错误显示在AddRange(dt)中;字符串不包含“AddRange”的防御。请使用Add()代替AddRange()否。它不起作用..是..我知道了..非常感谢您现在我编辑了它并尝试使用它
int i = 0;
List<string> AbDates = new List<string>();
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
string dt = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
if (string.IsNullOrEmpty(dt))
{
}
else
{
if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor == Color.Red)
{
if (MessageBox.Show("Do you want to UnMark this ?", "UnMark", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
{
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.White;
dt = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
AbDates.AddRange(AbDates.Where(val => val != dt).ToList());
i--;
}
}
else
{
if (MessageBox.Show("Do you want to Mark this As Absent?", "Absent", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
{
}
else
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.Red;
dt = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
// MessageBox.Show(i.ToString());
AbDates.Add(dt);
i++;
}
}
}
AbDates = AbDates.Where(val => val != dt).ToArray();