根据所选的列表框项目,仅加载一次DataGridView

时间:2018-12-13 11:48:53

标签: c# datagridview visual-studio-2017

我正在使用Visual Studio 2017开发WinForm应用程序。 我创建了一个列表框,如下所示。 enter image description here

当我第一次单击Fruits时,将出现以下dataGridview。

enter image description here

即,每当我按下水果时,我都应该获得上述数据网格。以及类似的蔬菜对应值。但是问题是当我再次单击水果一次时,这些值就被添加了。我再次得到相同的值,而不仅仅是保留它。这是我的代码。

public Form1()
    {          
        FruitList.Add("Mango");
        FruitList.Add("Apple");

        InitializeComponent();
    }
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        string a = listBox2.SelectedItem.ToString();
        if (a == "Fruits")
        {
            toolStripStatusLabel1.Text = a;
            dataGridView2.Columns.Add("key", "Fruit");
            dataGridView2.Columns.Add("value", "Name");
            foreach (var var in FruitList)
            {
                dataGridView2.Rows.Add("Fruit", var);
            }

        }
    }

当我选择蔬菜时,只有与此相关的值应该出现在dataGridview中。但是,当我单击列表框中的项目时,我将所有事情加起来

如何仅一次加载dataGridView值。 我是Visual Studio和C#的新手。只是探索它的各种功能。如果有人可以帮助,那就太好了。预先感谢

根据er-shoaib添加后的答案,

 dataGridView2.Rows.Clear();

在线上方

string a = listBox2.SelectedItem.ToString(); 

我重新加载了内容。

这很好,除非我不删除或进行任何更改。如果我删除选定的行,请使用Button控件说出Mango行,当我再次按下List中的Fruits项目时,这些项目将从头开始加载。如何进行更改保留在整个应用程序中。就像直到我关闭表格一样。任何帮助。

2 个答案:

答案 0 :(得分:1)

单击列表框中的项目时,需要先清除所有行,然后才能在数据网格视图中填充新行。

添加此行

dataGridView2.Rows.Clear();

在线上方

string a = listBox2.SelectedItem.ToString(); 

答案 1 :(得分:0)

在循环之前,清除数据网格,然后开始循环并添加项目。

    datagrid2.rows.clear().