我有一个从数据库返回对象列表的方法。我使用字典来连接 ID,并带有连接的字符串。我希望 FillComboBox 方法在单击后刷新组合框。这是 FillComboBox 代码:
private void FillComboBox()
{
List<Shift> shifts = null;
shifts = ShiftMenager.GetAllAsString();
if (shifts.Count != 0)
{
Dictionary<int, string> shiftsDict = null;
shiftsDict = new Dictionary<int, string>();
shiftsDict.Clear();
foreach (Shift sh in shifts)
{
shiftsDict.Add(sh.id, sh.startDate.ToShortDateString() +
" (" + sh.startDate.ToShortTimeString() + " - " +
sh.endDate.ToShortTimeString() + ") - " + sh.employee);
}
shiftComboBox.DisplayMember = "Value";
shiftComboBox.ValueMember = "Key";
shiftComboBox.DataSource = new BindingSource(shiftsDict, null);
}
else
{
shiftComboBox.Enabled = false;
}
}
我将第一个 FillComboBox() 放在
private void ShiftForm_Load(object sender, EventArgs e)
{
FillComboBox();
}
第二个按钮点击事件:
private void RefreshButton_Click(object sender, EventArgs e)
{
FillComboBox();
}
当表单加载时一切正常,但是当我单击按钮时,我收到一条消息“已添加具有相同键的项目。”。我真的找不到解决方法,在填充它之前尝试清除字典,首先分配 null 。怎么了?谢谢。