目的是将列表视为“名称”的列表。
这是字典:
class Scripts
{
public Dictionary<int, Script> scripts = new Dictionary<int, Script>();
...
}
这是我追求的属性'name':
class Script
{
public string name { get; set; }
...
}
这就是问题所在:
public partial class MainForm : Form
{
Scripts allScripts;
public MainForm()
{
InitializeComponent();
allScripts = new Scripts();
setupDataSources();
}
private void setupDataSources()
{
BindingSource ketchup = new BindingSource(allScripts.scripts, null);
//THIS LINE:
listBoxScripts.DisplayMember = allScripts.scripts["Key"].name.ToString();
listBoxScripts.ValueMember = "Key";
listBoxScripts.DataSource = ketchup;
}
...
}
我只是想不出如何使这条线工作!非常感谢您的建议!
由于
答案 0 :(得分:3)
您可以绑定到Value
并覆盖ToString
类中的Script
方法。
private void setupDataSources()
{
BindingSource ketchup = new BindingSource(allScripts.scripts, null);
listBoxScripts.DisplayMember = "Value";
listBoxScripts.ValueMember = "Key";
listBoxScripts.DataSource = ketchup;
}
脚本类:
class Script
{
public string name { get; set; }
public override string ToString()
{
return name;
}
}
答案 1 :(得分:0)
您将'name'的实际值设置为DisplayMember,因此除非您随机获取'name'中的值设置为与属性相同的文本,否则您永远不会得到它显示出来了。
你做得更好:
listBoxScripts.DisplayMember = "name";
当然?
答案 2 :(得分:0)
尝试将词典元素转换为脚本对象
listBoxScripts.DisplayMember = ((Script)allScripts.scripts["Key"]).name.ToString();