我有一个具有选自列表中的一些属性的对象 - 比方说,一个促进,可以有0到X的沟通渠道。 要显示/编辑这个信息我使用与选择的SelectionMode == MultiExtended一个列表框。
但在某些情况下,行为怪异
我有促进与选定的2个的通信信道(第一和先进后出三个通道),
我点击的第二通道(以前是唯一未选择的通道),并知道它表明,是第1和第2声道选择(我把支票在列表框的SelectedIndexChanged事件的开始 - 它表明SelectedItems.Count == 2,虽然我点击了一个单一的项目在所有其他情况下,未持有Ctrl或Shift键),在这种情况下,SelectedIndexChanged事件被触发两次被触发只有一次
这种情况只有我第一次打开这个dialogform后,如果我手动选择通道的第1和第3项,然后单击第二个项目 - 那么它工作正常
在行动的问题截屏
http://screencast.com/t/lVs0e9oau
这是我如何加载所有可能的渠道进入列表框的列表
foreach (var ct in Promotion_operations.Configuration.PromoCommunicationTypes)
{
KeyValuePair<string, PromotionCommunicationType> nct =
new KeyValuePair<string, PromotionCommunicationType>(ct.Name, ct);
communications.Add(nct);
}
PromotionCommunicationList.DataSource = communications; //Promotion_operations.Configuration.PromoCommunicationTypes;
PromotionCommunicationList.DisplayMember = "Key";
PromotionCommunicationList.ValueMember = "Value";
这是一种基于推广的数据我怎么加载selecteditems
private void LoadSelectedCommunicationsList(ListBox lstbox, List<PromotionCommunication> communications)
{
lstbox.SelectedItems.Clear();
foreach (var ct in communications)
{
for (int j = 0; j < lstbox.Items.Count; j++)
{
if (ct.CommunicationType.Id == ((KeyValuePair<string, PromotionCommunicationType>)lstbox.Items[j]).Value.Id)
{
lstbox.SelectedItems.Add(lstbox.Items[j]);
}
}
}
}
可能是什么这种行为的原因是什么?
在点击一个先前未选择列表中同时选择 - 新选择列表的项目,第一个项目?