我使用Items属性向表单中的comboBox添加了3个项目。这些项目是:Item1,Item2,Item3。
当我在comboBox中选择这三个项目中的任何一个时,我希望它显示一个消息框,其中包含相应对象的第一个属性的值。 例如,当我单击Item1时,我希望它显示来自对象a1的属性“CNP1”,当我单击Item2时,显示来自对象a2的属性CNP2,依此类推。
我认为我可以将comboBox中的每个项目与创建的3个对象中的一个连接起来,而不仅仅记下这些名称(Item1,Item2,Item3),但我不知道如何。
此外,由于我在同一个项目中创建的类,因此创建了这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 :(得分:0)
假设您的代码在所选索引发生更改时编译并显示o.ToString(),您可能希望从使用ArrayList切换到通用List,在您的情况下是一个List,它允许您访问您的属性不需要在事件处理程序中强制转换的实体。这是代码的相关部分:
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);
}
答案 1 :(得分: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);
}
}
答案 2 :(得分:0)
在public override string ToString()
课程中添加AbonatTelefonic
并添加代码return {first attrib variable};
您的参考:https://msdn.microsoft.com/en-us/library/ms173154(v=vs.80).aspx
希望这有帮助。