如何解决是否可以使用变量作为类成员的标识符
我正在从事Windows窗体项目 我有一个像这样的人类(简化):
class Person
{ public string name;
public int age;
public Person(string nameInput,int ageInput)
{
name=nameInput;
age = ageInput;
}
}
现在我想启动该类的某些成员,但我想使用Input作为该成员的标识符,如下所示:
Person someTextBox.Text = new Person(name.Text,age.Text);
因为我不知道用户想要结交多少个人,我也不知道他想如何称呼他们,所以我不能做这样的事情
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
...
标识符很重要,因为我想进行下拉菜单,以便用户可以选择其声明的人物并获得显示的年龄之类的信息
问题是它不能将“ someTextBox.Text”识别为变量,而是字符串
解决方法
通过覆盖ToString()
类上的Person
,您可以返回有关所讨论的Person
的特定属性,例如全名:
public override string ToString()
{
return $"{First} {Last}";
}
因此,当设置DataSource
中的ComboBox
时会使用ToString
,因为我们没有直接指定DisplayMember
用作可见字符串在下拉菜单中。
这里我正在加载ComboBox
:
public List<Person> People { get; set; }
private void Form1_Load(object sender,EventArgs e)
{
People = new List<Person>()
{
new Person() {First = "Frank",Last = "Wright"},new Person() {First = "Omega",Last = "Man"}
};
cbPeople.DataSource = people;
}
因此,当我启动页面时,我看到以下内容:
这是我的Person
全部课程
public class Person
{
public string First { get; set; }
public string Last { get; set; }
public override string ToString()
{
return $"{First} {Last}";
}
}
如何检索所选内容
请注意,ComboBox
在用户选择的项目上具有什么,它将存储对People
项目的引用,并在SelectedItem
中或通过{{ 1}}。因此,如果我想在上一个示例中选择当前选中的项目,则可以这样做:
SelectedIndex
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。