2014-01-11 3 views
1

Ищет четкий пример этого. Я создал новый объект, включая настройку нескольких свойств, добавив весь объект в listBox, а затем написал строку для их описания. Теперь мне нужен один элемент из объекта lsitBox по выбранному индексу. Есть много Синтаксисов, которые появляются, имеют сходные, но разные обычаи это затрудняющие поиск ...Свойства ListBox и объекта

Pseudocode: 
SpecialClass object = new SpecialClass; 
object.propertyA; 
Object.PropertyB; 

listBox.Items.Add(object); 

//listBox.SelectedItem[get propertyA]? What would retrieve propertyA or propertyB from the //list after putting the object in the list? 

.... Я пытался использовать эти переменные настройки, что-то вроде этого ...

MRecipeForm parent = new MRecipeForm(); 
      ListViewItem item = new ListViewItem(); 
      item.Tag = parent.recipeListB.Items; 

      var myObject = (double)parent.recipeListB.SelectedItems[0].Tag; 
      // here you can access your properties myObject.propertA etc... 

....

Это мой текущий код, который генерирует исключение:

MRecipeForm parent = new MRecipeForm(); 
      ListViewItem item = new ListViewItem(); 
      item.Tag = parent.recipeListB.Items; 

      Substrate o = ((ListBox)sender).SelectedItem as Substrate; 
      double dryWtLbs = o.BatchDryWtLbs; //BatchDryWtLbs is type double 
+0

Если вы используете субстрат o = ((ListBox) отправитель) .SelectedItem as Substrate; список должен содержать элементы (объекты) типа Субстрат – Jim

+0

Я отредактировал ваш заголовок. См. «Если вопросы включают« теги »в их названиях?» (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles) – Jim

ответ

1

только хранить object в свой объект Tag. При добавлении вашей детали:

ListViewItem item = new ListViewItem(); 
item.Tag = myObject; 
... 

Тогда:

var myObject = (SpecialClass)listBox.SelectedItems[0].Tag; 
// here you can access your properties myObject.propertA etc... 
+0

Мне нужно получить доступ к двойнику из списка, как его можно отбросить? – CodeMatrix

+0

@CodeMatrix: Вам не нужно его бросать. Когда вы добавили элемент в 'SpecialClass', вы можете получить доступ к его свойствам, не отбрасывая их. – Guffa

+0

Я работаю над этим в течение нескольких дней, и я близко к ответу! благодаря! – CodeMatrix

0

Примера для получения двойного после изменения выбранного индекса:

Форма 1 имеет ярлык: Label1 и ListBox: listbox1

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     var object1 = new SpecialClass { Text = "First line", Number = 1d }; 
     var object2 = new SpecialClass { Text = "Second line", Number = 2d }; 
     listBox1.Items.Add(object1); 
     listBox1.Items.Add(object2); 
    } 

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     SpecialClass o = ((ListBox)sender).SelectedItem as SpecialClass; 
     label1.Text = o.Number.ToString(); 
    } 
} 

public class SpecialClass 
{ 
    public string Text { get; set; } 
    public double Number { get; set; } 

    public override string ToString() 
    { 
     return Text; 
    } 
} 
Смежные вопросы