2017-06-18 43 views
0

我加3项下拉框中的形式,使用项目属性。这些项目是:Item1,Item2,Item3。如何在c#中的窗体中访问对象属性?

当我选择任何ComboBox中这些3项的,我希望它显示包含相应的物体的第一属性的值的消息框。 例如,当我点击项目1,我想让它显示我属性“CNP1”从对象A1,当我点击项目2,告诉我从对象A2属性CNP2等。

我想,我可能每个项目在下拉列表与创建的3对象的一个​​连接,而不仅仅是写下这些名字(项目1,项目2,项目3),但我不知道怎么办。

而且,这3个项目被创建,由于我在同一个项目中创建一个类。 我在这个项目中只有一个类,一个表单和主程序。

所以,我怎么能一个ComboBox项连接到这些对象之一,尤其是只有一个对象的属性。谢谢。

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace IncercareEX2015 
{ 
    public partial class PreluareDate : Form 
    { 
     ArrayList listaAbonati; 
     AbonatTelefonic ab; 

     public PreluareDate() 
     { 
      InitializeComponent(); 

      double[] vectMin = new double[4] { 12, 15, 50, 20 }; 
      AbonatTelefonic a1 = new AbonatTelefonic("CNP1", "Nume1", "Adresa1", "tel1", "tip1", vectMin); 

      double[] vectMin3 = new double[2] { 100, 130 }; 
      AbonatTelefonic a3 = new AbonatTelefonic("CNP3", "Nume3", "Adresa3", "Tel3", "Tip3", vectMin3); 

      double[] vectMin2 = new double[3] { 200, 80, 150 }; 
      AbonatTelefonic a2 = new AbonatTelefonic("CNP2", "Nume2", "Adresa2", "Tel2", "Tip2", vectMin2); 

      ///GENERARE COLECTIE DE OBIECTE 
      ArrayList listaAbonati = new ArrayList(); 
      listaAbonati.Add(a1); 
      listaAbonati.Add(a3); 
      listaAbonati.Add(a2); 
      listaAbonati.Sort(); 

     } 

    private void comboBox1_nume_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     foreach (object o in listaAbonati) 
      MessageBox.Show(o.ToString()); 
    } 
} 

}

+0

你们是不是要添加项目到组合框?或者显示已经在组合框中的项目的属性? – Isac

+0

我添加使用Items这样ComboBox控件的属性3项:项目1,项目2,项目3。我想,当我点击项目1,以显示我的对象A1 @ ISAC – Anais

+0

的第一属性,但是,如果你通过设计师加入他们,你添加字符串而非对象。还是你在代码中添加它们? – Isac

回答

0

假设您的代码编译,并显示o.ToString()时,所选择的指数的变化,你会希望使用一个ArrayList到一个通用的列表切换,在你的情况下,该列表将允许您访问实体的属性,而无需在事件处理程序中投射。这里是你的代码的相关部分:

List<AbonatTelefonic> listaAbonati; 

public PreluareDate() 
{ 
    ///GENERARE COLECTIE DE OBIECTE 
    listaAbonati = new List<AbonatTelefonic>(); 
    listaAbonati.Add(a1); 
    listaAbonati.Add(a3); 
    listaAbonati.Add(a2); 
    listaAbonati.Sort(); 

} 

private void comboBox1_nume_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    foreach (AbonatTelefonic at in listaAbonati) 
     MessageBox.Show(at.YourDesiredPropertyNameGoesHere); 
} 
0

您可以使用SelectedIndex得到AbonatTelefonic。我希望它能帮助你。

private void comboBox1_nume_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (comboBox1_nume.SelectedIndex != -1) 
    { 
     AbonatTelefonic at = (AbonatTelefonic)listaAbonati[comboBox1_nume.SelectedIndex]; 
     MessageBox.Show(at.YourAttribute); 
    } 
}