Hej. För att Checkboxen skall visa namnet så override'ar du ToString() metoden.Visa text i en checkedListBox
Jag har en checkedListBox (windowsapplikation) jag vill fylla med objekt, men på raderna vill jag ha en förklarande text, inte objektet.
Ett exempel: jag har en klass:
public class myData
{ private string Name;
private string Age; }
Sen fyller jag Listbox så här:
objMyData = new myData();
objMyData.Name="Michael";
objMyData.Age=26;
checkedListBox1.Items.Add(objMyData);
objMyData = new myData();
objMyData.Name="Peter";
objMyData.Age=28;
checkedListBox1.Items.Add(objMyData);
Det funkar ok, men ser inget vidare ut, eftersom listan visar objekten. Jag vill at det t.ex. på raderna bara ska stå "Michael" osv. Men jag väljer en rad vill jag såklart fånga upp objektet istället för bara den texten. Vet någon om det går att göra?
Jag har meckat en del med DisplayMember och så, men det funkar inte.Sv: Visa text i en checkedListBox
Jag har dessutom lagt till en tre konstruktorer för att göra det lite enklare att skapa objekt.
public class myData
{
public string name;
public int age;
public myData()
: this(string.Empty, 0)
{ }
public myData(string name)
: this(name, 0)
{ }
public myData(string name, int age)
{
this.name = name;
this.age = age;
}
public override string ToString()
{
return name;
}
}
private void button2_Click(object sender, EventArgs e)
{
myData objMyData;
objMyData = new myData("Michael", 26);
checkedListBox1.Items.Add(objMyData);
objMyData = objMyData = new myData("Peter",28);
checkedListBox1.Items.Add(objMyData);
}
För att hämta ut hämta ut ett objekt så kan du casta det:
private void button3_Click(object sender, EventArgs e)
{
//foreach (myData objMyData in checkedListBox1.SelectedItems)
foreach (myData objMyData in checkedListBox1.CheckedItems)
{
System.Diagnostics.Debug.WriteLine(objMyData.name);
}
}