Class 带有 PictureBox 变量和 Double。和更多

Class With PictureBox Variable and Double. And more

好的,我想制作一个包含图片框和双值变量的 class 的列表或数组。我想知道的是,如何在 Windows 表单上显示带有图片的 class,当您单击图片时,会弹出一个消息框并说明值那张照片。列表或数组必须是动态的,因为它的大小会在 运行 时间内发生变化。我希望这能解释我的需要。

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

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);
        }
    }

这是我尝试创建 class:

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

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

大部分代码来自我之前就此问题的部分问题提出的帮助

您已经有 "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);
            }

        }