[英]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.