它可能会回应谁, 我们有2个使用字典作为数据源的列表框。在文本框之间交换元素的代码如下:
private void btnSrc2Trg_Click(object sender, EventArgs e)
{
if (lbxSourceSite.Items.Count > 0 ) {
try {
string[] item = lbxSourceSite.Items[lbxSourceSite.SelectedIndex].ToString().Replace("[","").Split(',');
dctTargetsites.Add(item[0], item[1]);
dctSites.Remove(item[0]);
lbxSourceSite.DataSource = null;
lbxSourceSite.DataSource = new BindingSource(dctSites,null);
lbxSourceSite.DisplayMember = "Key";
lbxSourceSite.ValueMember = "Value";
lbxTargetSite.DataSource = null;
lbxTargetSite.DataSource = new BindingSource(dctTargetsites, null);
lbxTargetSite.DisplayMember = "Key";
lbxTargetSite.ValueMember = "Value";
}
catch (Exception ex)
{
MessageBox.Show(ex.GetBaseException().Message.ToString());
}
}
}
private void btnTrg2Src_Click(object sender, EventArgs e)
{
if (lbxTargetSite.Items.Count > 0 ) {
try{
string[] item = lbxTargetSite.Items[lbxTargetSite.SelectedIndex].ToString().Replace("[", "").Split(',');
dctSites.Add(item[0], item[1]);
dctTargetsites.Remove(item[0]);
lbxTargetSite.DataSource = null;
lbxTargetSite.DataSource = new BindingSource(dctTargetsites, null);
lbxTargetSite.DisplayMember = "Key";
lbxTargetSite.ValueMember = "Value";
lbxSourceSite.DataSource = null;
lbxSourceSite.DataSource = new BindingSource(dctSites, null);
lbxSourceSite.DisplayMember = "Key";
lbxSourceSite.ValueMember = "Value";
}catch(Exception ex){
MessageBox.Show(ex.GetBaseException().Message.ToString());
}
}
}
将最后一个元素添加到目标文本框并从源文本框中删除(反之亦然)后,有一个元素显示为“system.collection”,它可能与操作后重新绑定字典作为数据源有关,怎么能我摆脱它? 或者欢迎任何其他使用字典列表框的正确方法, 感谢您的关注
答案 0 :(得分:0)
显示的元素“system.collection”可能因为您正在使用
而发生string[] item = lbxSourceSite.Items[lbxSourceSite.SelectedIndex].ToString().Replace("[","").Split(',');
ToString()
方法会返回所选项目的数据类型名称 - > system.collection。
您可以使用:
string[] item = lbxSourceSite.Items[lbxSourceSite.SelectedIndex].Text.Replace("[","").Split(',');
甚至:
string[] item = lbxSourceSite.Items[lbxSourceSite.SelectedIndex].Value.ToString().Replace("[","").Split(',');
您必须在两个列表框中更改此内容:)