C# c如何刷新列表框中的项目

C# c如何刷新列表框中的项目,c#,listbox,updates,C#,Listbox,Updates,我有一个方法,将项目添加到我的列表框中,名为refreshInterface,程序启动后立即调用该方法,使用FormItems类在列表框中添加homeforms的名称,下面是rereshInterface方法 public void refreshInterface() { //int number = 0; foreach (DataSet1.xspGetAnalysisUsageTypesRow homeForms in myDataSet.x

我有一个方法,将项目添加到我的列表框中,名为refreshInterface,程序启动后立即调用该方法,使用FormItems类在列表框中添加homeforms的名称,下面是rereshInterface方法

    public void refreshInterface()
    {
        //int number = 0;
        foreach (DataSet1.xspGetAnalysisUsageTypesRow homeForms in myDataSet.xspGetAnalysisUsageTypes)
        {
            var forms = new FormItems(homeForms);
            listBox1.Items.Add(forms);
        }
    }
FormItems类如下所示

public class FormItems
{
    public DataSet1.xspGetAnalysisUsageTypesRow types { get; set; }

    public FormItems(DataSet1.xspGetAnalysisUsageTypesRow usageTypes)
    {
        types = usageTypes;
    }

    public override string ToString()
    {
        // returns the rows that are relating to types.xlib_ID
        var libtyps = types.GetxAnalysisUsageRows();
        var cnt = 0;

        foreach (DataSet1.xAnalysisUsageRow ty in libtyps)
        {
            //returns true if ty is null
            bool typeNull = ty.Isxanu_DefaultNull();

            // if its false, if xanu_Default is set
            if (!typeNull)
            {
                cnt += 1;
            }
        }

        var ret = String.Format("set {0} [Set: {1}]", types.xlib_Desc, cnt);

        //return this.types.xlib_Desc;

        return ret;
    }
}
每个列表框列表框位于homeform项目的左侧,有许多可以添加到其中的报表,因此,例如,我从列表框中选择了一个homeform,右侧有12个文本框,每个文本框有一对浏览和清除按钮。如果我点击浏览按钮,一个新表单出现,我从该表单中选择一个报告并将其添加到一个特定的文本框中,该homeform的计数应该更新,并且我清除了一个特定homeform的文本框,计数也应该更新

在调试应用程序时,它会根据添加到Homeform的报表数量显示每个Homeform的计数,但在程序运行时,如果向Homeform添加新报表,则在重新启动调试会话之前,计数不会更新。有人告诉我使用数据绑定方法,但我不确定如何在这里使用它


如何更新我的列表框项目?

您应该将列表框组件源绑定到可观察集合,您对可观察集合所做的每次更新都将更新列表框数据。

您可能应该研究绑定。这里是一个很好的起点:

Might not be exact but should give you an idea.

public void refreshInterface()
{
    Dictionary<int,string> items = new Dictionary<int,string>();

    //int number = 0;
    foreach (DataSet1.xspGetAnalysisUsageTypesRow homeForms in myDataSet.xspGetAnalysisUsageTypes)
    {
        var formitem = new FormItems(homeForms);
        items.Add(formitem.someprop, formitem.toString());

    }
    listbox.DataSource = items;
    listbox.DisplayMember = "Value";
    listbox.ValueMember = "Key";
}

如果您希望GUI响应数据更改,那么绑定是您最好的朋友。

这里的算法是什么?我问这个问题的原因是因为我以前从未使用过bindin,这取决于您是否使用XML或编程…research net的详细信息,有很多