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);
}
}
好的,我想制作一个包含图片框和双值变量的 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);
}
}