访问列表<t>值</t>

时间:2012-11-19 23:02:06

标签: c# list

我是编码的初学者并试图解决简单的问题:

我有三列的列表,并尝试访问列表中存储的值。它没有给我答案......任何想法?感谢

private void btnImage1Load_Click(object sender, EventArgs e)
    {
        openFileDialog1.ShowDialog();
        pictureBox1.ImageLocation = openFileDialog1.FileName;                    
    }

    public class ListThreeColumns
    {
        public int XCoord { get; set; }
        public int YCoord { get; set; }
        public Color Color { get; set; }
    }

    private List<ListThreeColumns> GetPixels()
    {
        Bitmap picture = new Bitmap(pictureBox1.Image);

        List<ListThreeColumns> colorList = new List<ListThreeColumns>
        {

        };

        for (int y = 0; y < picture.Height; y++)
        {
            for (int x = 0; x < picture.Width; x++)
            {
                colorList.Add(new ListThreeColumns { XCoord = x, YCoord = y, Color = picture.GetPixel(x, y) });
            }
        }
        return colorList;
    }


    private void btnScanPixels_Click(object sender, EventArgs e)
    {
        List<ListThreeColumns> seznamBarev = GetPixels();
       MessageBox.Show(seznamBarev[6].ToString());


    }

2 个答案:

答案 0 :(得分:4)

在这一行:

MessageBox.Show(seznamBarev[6].ToString());

...您正在访问列表中的元素6,但只是在其上调用ToString。因为你没有覆盖ListThreeElements(顺便说一句,这个名字会更好地命名为Pixel),这意味着结果不会特别有用。

你可以写:

ListThreeColumns pixel = seznamBarev[6];
MessageBox.Show(string.Format("{0}, {1} - {2}", pixel.X, pixel.Y, pixel.Color);

答案 1 :(得分:0)

你想做什么? 如果要以字符串形式显示每个项目,可以使用Jon方式。 但是最好将操作移到你的班级。 如果在ListThreeColumns类中重写'ToString()'方法,则代码可以正常工作,无需更改。

 public class ListThreeColumns
{
    public int XCoord { get; set; }
    public int YCoord { get; set; }
    public Color Color { get; set; }

    public override ToString()
    {
         return string.Format("X={0}, Y={1}, Color=({2};{3};{4})", 
             this.XCoord , this.YCoord , Color.R,Color.G,Color.B );
    }
}
相关问题