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

时间:2012-10-01 15:34:12

标签: c# listbox updates

我有一个方法,在我的列表框中添加名为refreshInterface的项目,一旦programe启动就会调用它,使用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的报告数量,但是当programe正在运行时,如果我向homeform添加新报告,则计数直到我重新启动调试会话才更新。我被告知使用数据绑定方法,但不知道我如何在这里使用它

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

3 个答案:

答案 0 :(得分:0)

您应该将List Box组件源绑定到Observable Collection,您对Observable Collection所做的每次更新都将更新List Box数据。

答案 1 :(得分:0)

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";
}

答案 2 :(得分:0)

你应该考虑绑定。这是一个很好的起点:

http://www.codeproject.com/Articles/140621/WPF-Tutorial-Concept-Binding

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