我們有一個自定義的對象集合,我們綁定到一個列表框控件。當一個項目被添加到列表中時,該項目出現在列表框中,但是當選擇該項目時,貨幣經理的位置將不會到達該位置。相反,貨幣經理的位置停留在現有位置。只要鼠標按下,列表框項目就會高亮顯示,但cm不會改變位置。VS2005 C#貨幣經理問題與位置不變
如果我複製其中一個集合對象,則列表框正常運行。
一個額外的注意事項集合內也有集合,不知道這是否是一個問題。
我們有一個自定義的對象集合,我們綁定到一個列表框控件。當一個項目被添加到列表中時,該項目出現在列表框中,但是當選擇該項目時,貨幣經理的位置將不會到達該位置。相反,貨幣經理的位置停留在現有位置。只要鼠標按下,列表框項目就會高亮顯示,但cm不會改變位置。VS2005 C#貨幣經理問題與位置不變
如果我複製其中一個集合對象,則列表框正常運行。
一個額外的注意事項集合內也有集合,不知道這是否是一個問題。
集合沒有「當前項目」的含義。也許你的自定義集合,但ListBox
沒有使用。它擁有自己的「當前項目」索引。您需要處理SelectedIndexChanged
事件以使其保持同步。
您可能需要發佈一些代碼;以下(只有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;}
}
}
我發現這個問題,花費了太多的時間之後....
這個問題涉及到被綁定到該項目(自定義類)的集合中的propertys之一日期選取器控制。該類的構造函數從不將該值設置爲默認值。
由於特定屬性(綁定到日期選擇器)無效,導致貨幣經理不允許更改倉位的問題。
我壞!我更瞭解!
感謝您的及時響應,這個網站巖! – 2008-10-10 14:44:16
自定義類的自定義集合實現Ilist。 – 2008-10-10 14:24:05