0

我有一个方法可以将项目添加到我的列表框,称为 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;
    }
}

每个列表框(列表框位于主窗体的左侧)项都有许多可以添加到其中的报告,例如,我从列表框中选择一个主窗体,右侧有 12 个文本框,每个文本框有一对按钮是浏览和清除。如果我单击浏览按钮会出现一个新表单,然后从该表单中选择一个报告并将其添加到特定的文本框,则该主表单的计数应该会更新,并且我清除特定主表单的文本框,计数也应该更新。

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

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

4

3 回答 3

0

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

于 2012-10-01T15:38:10.300 回答
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";
}
于 2012-10-01T16:10:08.380 回答
0

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

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

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

于 2012-10-01T16:20:20.983 回答