C# 修改数据源时,DataGridView中出现绘图错误

C# 修改数据源时,DataGridView中出现绘图错误,c#,winforms,datagridview,C#,Winforms,Datagridview,所以我有一个WinForms程序,其中有一个DataGridView。为此,我有一个数据源,形状为绑定列表 程序启动时设置源,如下所示: dgvExample.DataSource = myBindingList; DataGridView仅以编程方式编辑,使用函数从myDataSource中添加和删除项。单击最左侧列中的小“x”时,将调用“删除”函数 奇怪的是,当我使用remove函数移除最上面的一行时,它会将这两行画在彼此的上面,正如在图像中所看到的那样。鸭子在干什么 在移除顶行中的标记之

所以我有一个WinForms程序,其中有一个
DataGridView
。为此,我有一个
数据源
,形状为
绑定列表

程序启动时设置源,如下所示:

dgvExample.DataSource = myBindingList;
DataGridView
仅以编程方式编辑,使用函数从
myDataSource
中添加删除项。单击最左侧列中的小“x”时,将调用“删除”函数

奇怪的是,当我使用remove函数移除最上面的一行时,它会将这两行画在彼此的上面,正如在图像中所看到的那样。鸭子在干什么

在移除顶行中的标记之前:

删除顶行后:

用于不同步骤的功能如下所示:

DataGridView\u单击()

AddItem()

removietem()


它是一个绝对标准的DataGridView,还是一个从DataGridView继承的控件,经过某种方式的修改?我认为这是某种绘图错误,好像第二行在第一行中重新绘制,而没有删除第一行。datagridview是否有一些重绘/重绘功能?是否有帮助?我尝试了
myBindingList.ResetBindings()
dgvExample.Refresh()
dgvExample.Invalidate()
,但都没有帮助。
private void dgvExample_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        RemoveItem(e.RowIndex);
    }
}
public void AddItem(string description, decimal value)
{
    // Create custom object and set values
    CustomObject obj = new CustomObject();
    obj.Description = description;
    obj.Value = value;

    // Add object to BindingList
    myBindingList.Add(obj);
}
public void RemoveItem(int i) 
{
   // Removes rows with index i 
   myBindingList.RemoveAt(i)
}