Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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# GridView以错误的方式删除行_C#_Wpf_Gridview_Row - Fatal编程技术网

C# GridView以错误的方式删除行

C# GridView以错误的方式删除行,c#,wpf,gridview,row,C#,Wpf,Gridview,Row,我有一个gridview,如果我以这种方式删除一行: foreach(Label l in currentRow) // I have an internal list of the labels { grdTable.Children.Remove(l); // the cells are filled with labels } grdTable.RowDefinitions.Remove(index); 如果它是最后一行或倒数第二行则有效,在其他情况下失败 第2行的示例。已删除(

我有一个gridview,如果我以这种方式删除一行:

foreach(Label l in currentRow) // I have an internal list of the labels
{
    grdTable.Children.Remove(l); // the cells are filled with labels
}
grdTable.RowDefinitions.Remove(index);
如果它是最后一行倒数第二行则有效,在其他情况下失败

第2行的示例。已删除(索引1)

第3排。第2行未显示。确实被删除了,但在我看来,第3行。没有正确地推到正确的位置。即使是更新网格也无济于事

编辑:当前行是一个
列表
,我有一个
列表
,它表示网格内容。我已经检查了填充行的
列表是否始终具有与保存该行的行定义相同的索引


有什么建议吗?

尝试查看currentRow和grdTable的确切结构。可能与这些不匹配的东西有关。在这里发布结构(我指的是那里的数据以及它的结构)将帮助那些试图帮助你的人

尝试查看currentRow和grdTable的确切结构。可能与这些不匹配的东西有关。在这里发布结构(我指的是那里的数据以及它的结构)将帮助那些试图帮助你的人

在我看来,您使用的是
网格
控件,而不是“GridView”(我不知道有任何WPF控件使用该名称)。您使用
行定义
对我来说就是这个意思

网格中,每个控件所在的行由其
网格.row
附加属性的值给出。网格的
RowDefinitions
指定每行的高度

删除
行定义
时,您只需调整
网格中各行的高度
。删除
行定义
不会影响网格中控件的
行值

要完全删除该行,您需要:

  • 删除行中的所有控件
  • 将删除的控件下面的行中的所有控件向上移动,然后
  • 删除
    行定义
  • 您的代码似乎缺少步骤2

    您的方法在删除最后一行的情况下有效,因为这样就没有控件需要重新排列。在删除最后第二行的情况下,它似乎也起作用。假设您有10行,编号从0到9,并且删除了第8行。现在有9行定义,数字从0到8。但是,最后一行中的控件的
    网格值仍设置为9,现在超出范围。WPF将最后一行中带有
    网格.Row
    的所有控件置于范围之外,因此第9行中的控件显示在第8行中。如果将
    RowDefinition
    添加回网格,您会发现第9行中的控件将出现在新的第9行中,在第8行中留下一个间隙


    注:您不使用?

    的任何原因在我看来,您使用的是
    网格
    控件,而不是“GridView”(我不知道有任何WPF控件具有该名称)。您使用
    行定义
    对我来说就是这个意思

    网格中,每个控件所在的行由其
    网格.row
    附加属性的值给出。网格的
    RowDefinitions
    指定每行的高度

    删除
    行定义
    时,您只需调整
    网格中各行的高度
    。删除
    行定义
    不会影响网格中控件的
    行值

    要完全删除该行,您需要:

  • 删除行中的所有控件
  • 将删除的控件下面的行中的所有控件向上移动,然后
  • 删除
    行定义
  • 您的代码似乎缺少步骤2

    您的方法在删除最后一行的情况下有效,因为这样就没有控件需要重新排列。在删除最后第二行的情况下,它似乎也起作用。假设您有10行,编号从0到9,并且删除了第8行。现在有9行定义,数字从0到8。但是,最后一行中的控件的
    网格值仍设置为9,现在超出范围。WPF将最后一行中带有
    网格.Row
    的所有控件置于范围之外,因此第9行中的控件显示在第8行中。如果将
    RowDefinition
    添加回网格,您会发现第9行中的控件将出现在新的第9行中,在第8行中留下一个间隙


    PS.您不使用网格的任何原因?

    WPF Toolkit()包括DataGrid控件,可与.NET 3.5一起使用。感谢您,很抱歉我混淆了舒尔it是网格而不是gridview。这个很好用!WPF Toolkit()包含一个DataGrid控件,可与.NET 3.5一起使用。感谢您,很抱歉我混淆了舒尔it是网格而不是gridview。这个很好用!