2008-10-10 52 views
1

我們有一個自定義的對象集合,我們綁定到一個列表框控件。當一個項目被添加到列表中時,該項目出現在列表框中,但是當選擇該項目時,貨幣經理的位置將不會到達該位置。相反,貨幣經理的位置停留在現有位置。只要鼠標按下,列表框項目就會高亮顯示,但cm不會改變位置。VS2005 C#貨幣經理問題與位置不變

如果我複製其中一個集合對象,則列表框正常運行。

一個額外的注意事項集合內也有集合,不知道這是否是一個問題。

+0

自定義類的自定義集合實現Ilist。 – 2008-10-10 14:24:05

回答

0

集合沒有「當前項目」的含義。也許你的自定義集合,但ListBox沒有使用。它擁有自己的「當前項目」索引。您需要處理SelectedIndexChanged事件以使其保持同步。

1

您可能需要發佈一些代碼;以下(只有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;} 
    } 
} 
2

我發現這個問題,花費了太多的時間之後....

這個問題涉及到被綁定到該項目(自定義類)的集合中的propertys之一日期選取器控制。該類的構造函數從不將該值設置爲默認值。

由於特定屬性(綁定到日期選擇器)無效,導致貨幣經理不允許更改倉位的問題。

我壞!我更瞭解!

+0

感謝您的及時響應,這個網站巖! – 2008-10-10 14:44:16