簡體   English   中英

VS2005 C#貨幣管理器問題,頭寸未更改

[英]VS2005 C# Currency Manager Issue with Position Not Changing

我們有一個綁定到列表框控件的對象的自定義集合。 將某項添加到列表后,該項目將顯示在列表框中,但是當選擇該項目時,貨幣經理的頭寸將不會轉到該頭寸。 相反,貨幣經理職位保持在現有職位。 只要按下鼠標,列表框項目就會高亮顯示,但是cm永遠不會改變位置。

如果我復制集合對象之一,則列表框將正常運行。

另外一個注意事項是該集合中也有集合,不確定是否會引起問題。

我花了太多時間后才發現問題。

此問題與綁定到日期選擇器控件的集合中項目(自定義類)的屬性之一有關。 該類的構造函數永遠不會將值設置為默認值。

這導致貨幣管理器出現問題,因為特定屬性(綁定到日期選擇器)無效,因此不允許更改頭寸。

我不好! 我知道更好!

您可能需要發布一些代碼; 下面的內容(兩個列表僅由CM綁定在一起)表明它可以正常工作……因此要查找該錯誤,我們可能需要一些代碼。

using System;
using System.ComponentModel;
using System.Windows.Forms;
static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        BindingList<Foo> foos = new BindingList<Foo>();
        foos.Add(new Foo("abc"));
        foos.Add(new Foo("def"));

        ListBox lb1 = new ListBox(), lb2 = new ListBox();
        lb1.DataSource = lb2.DataSource = foos;
        lb1.DisplayMember = lb2.DisplayMember = "Bar";
        lb1.Dock = DockStyle.Left;
        lb2.Dock = DockStyle.Right;

        Button b = new Button();
        b.Text = "Add";
        b.Dock = DockStyle.Top;
        b.Click += delegate
        {
            foos.Add(new Foo("new item"));
        };
        Form form = new Form();
        form.Controls.Add(lb1);
        form.Controls.Add(lb2);
        form.Controls.Add(b);
        Application.Run(form);
    }


}
class Foo
{
    public Foo(string bar) {this.Bar = bar;}
    private string bar;
    public string Bar {
        get {return bar;}
        set {bar = value;}
    }
}

集合沒有“當前項目”的感覺。 也許您的自定義集合可以使用,但是ListBox沒有使用它。 它在集合中有自己的“當前項目”索引。 您需要處理SelectedIndexChanged事件以使其保持同步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM