So habe ich eine Comboboxabrufen SelectedItem Combobox
cmbSpecifics1.Items.AddRange(typeof(Aggressive).GetEnumNames());
, dass ich mit Enum bevölkern
public enum Aggressive
{
Yes,
No,
Sometimes,
Only_when_hungry
}
Wie kann ich seinen gewählten Wert abrufen und auf eine Eigenschaft zu senden?
public Aggressive RealAggressiveLevel
{
get { return _aggressive; }
set { _aggressive = value; }
}
Bee iBee = new Bee(animal);
iBee.RealAggressiveLevel = ???cmbSpecifics1.SelectedValue???
Dies ist, wie ich es zu füllen:
lblSpecifics1.Text = "Aggressive:";
cmbSpecifics1.Items.Clear();
cmbSpecifics1.Items.AddRange(typeof(Aggressive).GetEnumNames());
Das ist die Linie, die ich auf null ref Ausnahme erhalten
iBee.RealAggressiveLevel = (Aggressive)Enum.Parse(typeof(Aggressive), cmbSpecifics1.SelectedValue.ToString());
ist dies, wie im Hinzufügen von Daten
_animal = ((AnimalType)lbCategory.SelectedIndex);
switch (_animal)
{
case AnimalType.Insect:
switch ((InsectTypes)lbAnimalObject.SelectedIndex)
{
case InsectTypes.Bee:
Bee iBee = new Bee(animal);
iBee.RealAggressiveLevel = (Aggressive)Enum.Parse(typeof(Aggressive), cmbSpecifics1.SelectedValue.ToString());
iBee.Worker = tbSpecific1.Text;
iBee.Color = tbSpecific2.Text;
animalManager.Add(iBee);
break;
Prost im Voraus
In welcher Umgebung ist das? Ist es UWP, Windows Forms, WPF? – kettch
Windows Forms, sorry verpasst, dass – Noxious
Diese Lösung funktioniert nur, wenn es akzeptabel ist, tatsächlichen 'enum'-Wert Text wie "Only_when_hungry" in der Benutzeroberfläche zu schreiben, was für die meisten Anwendungen nicht der Fall ist und sogar weniger, wenn Sie mehrsprachig sein müssen . Normalerweise würde ich eine Item-Klasse verwenden, um ein Element darzustellen, und eine Ressourcendatei verwenden, um den lokalisierten Namen mithilfe von ToString() zu laden, um den Text des Aufzählungswerts als Schlüssel in der Ressource zu erhalten. Und ich würde einige Unit-Tests durchführen, um sicherzustellen, dass ich keine fehlenden oder zusätzlichen Einträge habe. – Phil1970