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

问题描述 投票:0回答:2

我正在使用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);
            }

        }
    }

当我选择Vegetable时,只有与之相关的值应出现在dataGridview中。但是当我点击列表框中的项目时,我正在添加所有内容

如何只加载一次dataGridView值。我是视觉工作室和C#的新手。只是探索它的各种功能。如果有人能提供帮助,那就太好了。提前致谢

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

 dataGridView2.Rows.Clear();

在线上方

string a = listBox2.SelectedItem.ToString(); 

我重新加载了内容。

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

c# datagridview visual-studio-2017
2个回答
1
投票

单击列表框中的项目时,需要在将新行填充到数据网格视图之前清除所有行。

添加此行

dataGridView2.Rows.Clear();

在线上方

string a = listBox2.SelectedItem.ToString(); 

0
投票

在for循环之前,清除datagrid,然后启动for循环并添加项目。

    datagrid2.rows.clear().
© www.soinside.com 2019 - 2024. All rights reserved.