C# 如何清除包括第一行在内的所有datagridview行(我尝试过Dgv.DataSource=null;Dgv.rows.clear();)

C# 如何清除包括第一行在内的所有datagridview行(我尝试过Dgv.DataSource=null;Dgv.rows.clear();),c#,datagridview,C#,Datagridview,我是C#的初学者,创建了一个DataGridView,如: private DataGridViewTextBoxColumn createText(string name, string Hname, int width) { DataGridViewTextBoxColumn tmt = new DataGridViewTextBoxColumn(); tmt.Name = name; tmt.HeaderText = Hname; tmt.Width = w

我是C#的初学者,创建了一个DataGridView,如:

private DataGridViewTextBoxColumn createText(string name, string Hname, int width)
{
    DataGridViewTextBoxColumn tmt = new DataGridViewTextBoxColumn();
    tmt.Name = name;
    tmt.HeaderText = Hname;
    tmt.Width = width;
    tmt.DataPropertyName = name;
    return tmt;
}

private DataGridViewComboBoxColumn PMcreateCombo(string name, int width, string item_str)
{
    DataGridViewComboBoxColumn tmd = new DataGridViewComboBoxColumn();
    string[] items;

    items = item_str.Split(' ');
    tmd.HeaderText = name;
    tmd.Name = name;
    //tmd.MaxDropDownItems = 4;
    foreach (string str in items)
    {
        tmd.Items.Add(str);
    }
    tmd.Width = width;
    tmd.DataPropertyName = name;
    return tmd;
}
我想使用numericupdown来控制列的数量,所以我写了如下内容:

private void numericUD_ValueChanged(object sender, EventArgs e)
{
    Dgv.DataSource = null;
    Dgv.Rows.Clear();
    Init();
}
private void Init()
{ 
    SCM = new List<SCM>();
    Dgv.AutoGenerateColumns = false;
    Dgv.AllowUserToAddRows = false;

    Dgv.Columns.Add(createText("AA", "AA", 60));
    Dgv.Columns.Add(createCombo("QQ", 60, "RRR GGG BBB"));
    addNewColumns();

    Dgv.DataSource = Table;            
}
private void numericUD\u值已更改(对象发送方,事件参数e)
{
Dgv.DataSource=null;
Dgv.Rows.Clear();
Init();
}
私有void Init()
{ 
SCM=新列表();
Dgv.AutoGenerateColumns=false;
Dgv.allowUserToAddress=false;
添加(createText(“AA”,“AA”,60));
添加(createCombo(“QQ”,60,“RRR GGG BBB”);
addNewColumns();
Dgv.DataSource=表;
}
但是当我更改numericUpDown时,AA QQ和Addnewcolumn都是在旧列之后创建的,但是如果我在
函数numeriCud\u ValueChanged
中标记
Init()
,第一行(AA QQ)仍然保留,但第二行消失

所以我想问一下如何删除DataGridView中的所有元素,包括第一行,然后根据NumericUpDown创建一个新的元素


谢谢

您需要在清除数据源后刷新DataGridView

private void numericUD_ValueChanged(object sender, EventArgs e)
{
    Dgv.DataSource = null;
    Dgv.refresh();
    Init();
}