2008-10-10 20 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