0

プログラムが開始するとすぐに呼び出されるrefreshInterfaceと呼ばれるリストボックスにアイテムを追加するメソッドがあり、FormItemsクラスを使用してリストボックスにホームフォームの名前を追加します。以下の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 個のテキストボックスがあり、各テキストボックスがあります。ブラウズとクリアのボタンのペアがあります。参照ボタンをクリックすると、新しいフォームが表示され、そのフォームからレポートを選択して特定のテキスト ボックスに追加すると、そのホームフォームのカウントが更新され、特定のホームフォームのテキスト ボックスをクリアすると、カウントもアップデート。

アプリケーションをデバッグすると、ホームフォームに追加されたレポートの量に応じて各ホームフォームの数が表示されますが、プログラムの実行中にホームフォームに新しいレポートを追加すると、カウントが更新されませんデバッグセッションを再開するまで。Databinding メソッドの使用について説明を受けましたが、ここでどのように使用できるかわかりません

リストボックス項目を更新するにはどうすればよいですか?

4

3 に答える 3

0

リスト ボックス コンポーネント ソースをオブザーバブル コレクションにバインドする必要があります。オブザーバブル コレクションを更新するたびに、リスト ボックス データが更新されます。

于 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

You should probably look into binding. Here is a good place to start:

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

If you want a GUI to respond to data changes then binding is your best friend.

于 2012-10-01T16:20:20.983 に答える