Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表框和对象属性_C#_Listbox - Fatal编程技术网

C# 列表框和对象属性

C# 列表框和对象属性,c#,listbox,C#,Listbox,我一直在寻找一个明确的例子。 我创建了一个新对象,包括设置几个属性,将整个对象添加到列表框,然后编写一个字符串来描述它们。现在,我希望在所选索引处从lsitBox对象中获得一项。有许多语法似乎有相似但不同的用法,这使搜索变得复杂 Pseudocode: SpecialClass object = new SpecialClass; object.propertyA; Object.PropertyB; listBox.Items.Add(object); //listBox.Selected

我一直在寻找一个明确的例子。 我创建了一个新对象,包括设置几个属性,将整个对象添加到列表框,然后编写一个字符串来描述它们。现在,我希望在所选索引处从lsitBox对象中获得一项。有许多语法似乎有相似但不同的用法,这使搜索变得复杂

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

只需将
对象
存储到项目的属性中即可。添加项目时:

ListViewItem item = new ListViewItem();
item.Tag = myObject;
...
然后:


更改选定索引后检索double的示例:

表单1有一个标签:label1和一个列表框: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;
    }
}

我需要从列表中获得一个替身,如何施放它?@CodeMatrix:你不需要施放它。当您将项目强制转换为
SpecialClass
时,您就可以访问其属性,而无需强制转换它们。我已经为此工作了几天,很快就会找到答案!谢谢获得此异常:“System.InvalidCastException”,如果您使用基板o=((列表框)发送器)。选择EdItem作为基板;列表框需要包含Substrate类型的项(对象)。我已编辑了您的标题。请看,
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;
    }
}