C# 在WPF中删除datatable中的最后一行时索引超出范围

C# 在WPF中删除datatable中的最后一行时索引超出范围,c#,wpf,C#,Wpf,在WPF中删除datatable中的最后一行时,出现数组索引超出范围异常。删除其他行是可以的,但尝试删除最后一行会触发此问题。这里怎么了 public void removeRow(int index) { if (index < 0) { index = 0; } myDataTable.Rows.RemoveAt(index); myDataTable.AcceptChanges(); } public void deletro

在WPF中删除datatable中的最后一行时,出现数组索引超出范围异常。删除其他行是可以的,但尝试删除最后一行会触发此问题。这里怎么了

public void removeRow(int index)
{
    if (index < 0)
    {
        index = 0;
    }
    myDataTable.Rows.RemoveAt(index);
    myDataTable.AcceptChanges();
}
public void deletrow(int索引)
{
如果(指数<0)
{
指数=0;
}
myDataTable.Rows.RemoveAt(索引);
myDataTable.AcceptChanges();
}

我还尝试了
selectedDataRow.delete()
myDataTable.remove(selectedDataRow)
,但它们都有相同的问题。

行号索引为0,因此您可能被关闭了1。你可以把这个加到你的支票上

if (index < 0)
{
    index = 0;
}
else if (index >= myDataTable.Rows.Count)
{
    index = myDataTable.Rows.Count - 1;
}
if(索引<0)
{
指数=0;
}
else if(索引>=myDataTable.Rows.Count)
{
index=myDataTable.Rows.Count-1;
}

删除行时,该行中的所有数据都将丢失。还可以调用DataRow类的Delete方法,只标记要删除的行。调用RemoveAt与调用Delete,然后调用AcceptChanges是一样的。

行号索引为0,因此您可能会被关闭1。你可以把这个加到你的支票上

if (index < 0)
{
    index = 0;
}
else if (index >= myDataTable.Rows.Count)
{
    index = myDataTable.Rows.Count - 1;
}
if(索引<0)
{
指数=0;
}
else if(索引>=myDataTable.Rows.Count)
{
index=myDataTable.Rows.Count-1;
}

删除行时,该行中的所有数据都将丢失。还可以调用DataRow类的Delete方法,只标记要删除的行。调用RemoveAt与调用Delete然后调用AcceptChanges是一样的。

谢谢您的回答。这不会删除我想要的行,而是删除上一行。我猜最后一行不被视为datatable行!它只显示在datagrid中。听起来很奇怪!您可能引用最后一个空行以允许用户添加行?没问题。我仍然建议您在方法中添加额外的验证,以防止将来出现超出范围的异常。感谢您的回答。这不会删除我想要的行,而是删除上一行。我猜最后一行不被视为datatable行!它只显示在datagrid中。听起来很奇怪!您可能引用最后一个空行以允许用户添加行?没问题。我仍然建议您在方法中添加额外的验证,以防止将来出现超出范围的异常。