gpt4 book ai didi

C# 组合框重写 ToString

转载 作者:太空狗 更新时间:2023-10-29 21:15:10 24 4
gpt4 key购买 nike

我在使用 ComboBox 时遇到了一些问题。

我的组合框的显示成员未由 MAP 类的覆盖的 ToString 方法填充。

这是我的代码:

Form1.cs:

private void Form1_Load(object sender, EventArgs e) {  
...
...
MAPList MAP = new MAPList();
comboBox1.DataSource = MAP.All;
comboBox1.ValueMember = "Code";
...
...
}

MAPList.cs:

public class MAPList {  
public readonly List<MAP> All;

public MAPList() {
All = new List<MAP>();

var MapData = // Getting map data

foreach(MAP m in MapData) {
All.Add(new Map(m.Name, m.Code));
}
}
}

MAP.cs:

public class MAP {
public readonly string Name;

private string code;
public string Code { get { return code; } }

public RadioCode(string Name, string Code) {
this.Name = Name;
this.code = Code;
}

public override string ToString() {
return String.Format("{0}: {1}", Name, Code);
}
}

最佳答案

如果设置 ValueMember,将不会调用 ToString。如果您不设置 ValueMember,它将按预期工作,但当然 Code 将不会用作 ComboBox 的选定值。

或者,如果您希望使用 ValueMember,您可能还想设置 DisplayMember。您可以在用于显示的 MAP 上创建一个属性,即:

public class MAP
{
public readonly string Name;

private string code;

public string Code { get { return code; } }
public string Display { get { return ToString(); } }

public MAP(string Name, string Code)
{
this.Name = Name;
this.code = Code;
}

public override string ToString()
{
return String.Format("{0}: {1}", Name, Code);
}
}

然后您可以在表单中设置 DisplayMember:

MAPList MAP = new MAPList();
comboBox1.DataSource = MAP.All;
comboBox1.ValueMember = "Code";
comboBox1.DisplayMember = "Display";

关于C# 组合框重写 ToString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3664956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com