具有PictureBox变量和双精度的类。更多

时间:2015-06-20 07:03:52

标签: c# double picturebox

好的,我想创建一个列表或一个具有图片框和双值变量的类的数组。我想知道的是,如何在Windows窗体上显示该类,带有图片,当您单击图片时,会弹出一个消息框并说出该图片的值。列表或数组必须是动态的,因为它的大小将在整个运行时间内发生变化。我希望这能解释我的需要。

到目前为止,我能够创建一个动态的图片框数组以显示在表单上,​​但我无法分配双值。因此,当我点击图像时,我可以移动它,但我不知道如何为每个图像分配特定值。 我的代码在点击时对图像进行处理:

private void Picturebox_ClickFunction(object sender, EventArgs e)
    {
        PictureBox pb2 = (PictureBox)sender; // you need to cast(convert) the sende to a picturebox object so you can access the picturebox properties
        if (pb2.Location.Y >= 250)
        {
            pb2.Top -= 20;
           // MessageBox.Show(pb2.Tag);
        }
        else
        {
            pb2.Top += 20;
        }
    }

我分配图片框图片的代码:

void print_Deck(List<Container> b, double []a)
    {
        double n;
        y = 250; x = 66;
        for (int i = 0; i < 13; i++)
        {

            pb2[i] = new PictureBox();
            pb2[i].Click += new System.EventHandler(this.Picturebox_ClickFunction);
            pb2[i].Visible = true;
            pb2[i].Location = new Point(0, 0);
            this.Size = new Size(800, 600);
            pb2[i].Size = new Size(46, 65);
            pb2[i].SizeMode = PictureBoxSizeMode.StretchImage;
            pb2[i].Location = new Point(x, y);
            n = a[i];
            im = face(n);
            pb2[i].Image = im;
            this.Controls.Add(pb2[i]);
            x = x + 20;
            Container NewContainer = new Container();
            NewContainer.picture = pb2[i];
            NewContainer.number = n;
            AddToList(b, NewContainer);
        }
    }

这是我创建课程的尝试:

public class Container
    {
        public PictureBox picture { get; set; }
        public double number { get; set; }
    }

public void AddToList(List<Container> o, Container ContainerToAdd)
    {
        o.Add(ContainerToAdd);
    }

大多数代码来自我之前就本部分

的问题提出的帮助

1 个答案:

答案 0 :(得分:1)

你已经拥有“tag”属性为什么不使用那个? 否则你可以像这样扩展你的图片框。

  public class PictureBoxExt : PictureBox
    {
        [Browsable(true)]
        public double SomeValue { get; set; }
    }

现在使用 PictureBoxExt 代替 PictureBox 像这样设置图片框属性“SomeValue”的值。

pictureBoxExt.SomeValue  = 0.123d;

稍后在pictureBoxExt点击事件将是

 private void pictureBoxExt1_Click(object sender, EventArgs e)
        {
            PictureBoxExt pic = sender as PictureBoxExt;
            if (pic != null) {
                MessageBox.Show("Double Value" +  pic.SomeValue);
            }

        }