我们有一个自定义的对象集合,我们绑定到一个列表框控件。当一个项目被添加到列表中时,该项目出现在列表框中,但是当选择该项目时,货币经理的位置将不会到达该位置。相反,货币经理的位置停留在现有位置。只要鼠标按下,列表框项目就会高亮显示,但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