EDITED!工作代码
我有以下课程:
class Medic
{
private readonly int codM;
private string numeM;
private string specialitate;
//i have a constructor and properties with get and set, correctly written
}
我在要填写的表单中添加了3个textBox,每个都与一个类属性相关。
在此之后我有一个按钮,如果所有3个文本框字段都正确完成,则会创建一个新的类对象。
此对象将添加到List中。这个对象列表我想在listBox中显示,并在我添加新对象时更新。
另外,我希望列表中已有2个对象,并且在运行程序时显示在listBox中,在我的代码中创建的程序,不使用textBoxes,以及新输入的对象。我几乎不知道在哪里编写代码来创建这两个对象,就像创建和填充对象列表或编写代码以将此列表绑定到ListBox中一样;
public partial class Form1 : Form
{
List<Medic> listaMedici = new List<Medic>();
Medic m1 = new Medic(0, "ion", "endocrinologie");
public Form1()
{
InitializeComponent();
listaMedici.Add(m1);
}
private void button1_AddObject_Click(object sender, EventArgs e)
{
if (textBox1_cod.Text == "")
errorProvider1.SetError(textBox1_cod, "Introduceti codul medicului!");
else if (textBox2_nume.Text == "")
errorProvider1.SetError(textBox2_nume, "Introduceti numele medicului");
else if (Regex.IsMatch(textBox2_nume.Text, @"^[ a-zA-Z]+$") == false)
errorProvider1.SetError(textBox2_nume, "Numele contine doar litere si spatii");
else if (textBox3_specialitate.Text == "")
errorProvider1.SetError(textBox3_specialitate, "Introduceti specialitatea medicului");
else
{
try
{
Medic medic = new Medic(Convert.ToInt32(textBox1_cod.Text), textBox2_nume.Text, textBox3_specialitate.Text);
foreach (Medic m in listaMedici)
{
if (textBox1_cod.Text == m.CodM.ToString())
{
throw new Exception("Codul contractului incalca proprietatea de unicitate. Introduceti un cod unic");
textBox1_cod.Clear();
}
}
listaMedici.Add(medic);
listBox1_medici.DataSource = new ObservableCollection<Medic>(listaMedici);
listBox1_medici.DisplayMember = nameof(Medic.NumeM);
listBox1_medici.ValueMember = nameof(Medic.CodM);
listBox1_medici.SelectedIndex = 0;
MessageBox.Show("ADDED!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
errorProvider1.Clear();
textBox1_cod.Clear();
textBox2_nume.Clear();
textBox3_specialitate.Clear();
}
}
}
private void listBox1_medici_SelectedIndexChanged(object sender, EventArgs e)
{
}
答案 0 :(得分:0)
显示成员应该是要显示的属性的名称,而不是字符串属性。反射用于查找显示成员名称的属性。例如,如果您的medic.NumeM
值是&#34;您好&#34; WPF将查找名为&#34; Hello&#34;的属性,检索属性的值并将其显示在列表框中。
在您的情况下,代码应为:listBox1_medici.DisplayMember = "NumeM";