【问题标题】:Issue when adding the row at the bottom of DataGridView [closed]在 DataGridView 底部添加行时出现问题 [关闭]
【发布时间】:2019-01-18 23:04:30
【问题描述】:

Add()、Insert() 方法在最后一行之前而不是之后添加项目

我在尝试将行添加到 DataGridView 时遇到问题。

我当然可以手动重新排列集合,但我不相信没有方法可以在所有元素之后添加项目。

据我了解,新元素的索引比所有其他元素都大。

对图片感到抱歉 - 但我更容易展示发生了什么

之前: 之后

如您所见,该行被添加之前前一个 - 而不是之后

该行在旧行之前。

【问题讨论】:

  • 你能提供一个minimal reproducible example 你在说什么吗? DataGridView 使用什么样的物品来源?您是直接添加项目还是通过绑定到ObservableCollection 或任何其他集合?我敢肯定,例如List<T>.Add() 在列表末尾插入项目。请注意,列表内容的排序方式可能与DataGridView查看的方式不同。
  • @P__J__ 我真的很想知道一个 6k 用户希望我们如何帮助他/她处理我们看不到的代码。没有 mcve,我们不知道您在说什么。您混淆了 rowsitemscollectionsviews 等...请尝试澄清您的问题并提出问题明确究竟是什么问题。 DataGridView 是一个复杂的控件,自动支持排序、过滤、分组等。我目前正在使用一个,它根据当前排序列在正确的位置显示新添加的行.
  • 这些图像中的列表在哪里?
  • 我认为 您将实际行混淆自动行始终显示在末尾​​b>有dataGridView1.AllowUserToAddRows == true。在您使用代码添加行时将其设置为false,然后恢复正常;-)
  • @TaW Post 是答案,并将接受它作为答案。谢谢

标签: c# winforms list datagridview


【解决方案1】:

当仔细观察图像时,可以看到最后一行的标题中有一个星号

这表明它是有变化的新行。 (在更改之前,它有一个 pen 图像。)

这个新的自动行总是显示在末尾,因为用户希望在那里添加行。

当您在代码中添加行时,您可能不希望这样做;所以简单地设置

view.AllowUserToAddRows = false;

一切都很好。

另外:养成从Add() 获取回报并使用该索引处理新行的习惯。有了这个小小的改动,你的问题就不会出现了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多