我正在为学校创建一个“石头剪刀蜥蜴spock”游戏。我被困在分配的部分,我们需要使用tag属性使用相应的名称标记位图图像。我创建了一个名称数组和一个位图图像数组。
我不确定如何使用tag属性来执行此操作。确切的说明是:
创建一个字符串对象数组,并初始化它以包含字符串值“rock”,“paper”,“scissors”,“lizard”,“spock”将代码添加到每个位图以及相应的字符串值。 (例如位图“properties.resources.rock”应该用字符串“rock”标记。
private void Form1_Load(object sender, EventArgs e)
{
string[] names =
{
"rock",
"paper",
"scissors",
"lizard" ,
"spock"
};
Bitmap[] bitmaps =
{
Properties.Resources.rock,
Properties.Resources.paper,
Properties.Resources.scissors,
Properties.Resources.lizard,
Properties.Resources.spock,
};
}
我尝试添加rock.Tag = properties.resources.rock
。
我试过names[0].tag = properties.resources.rock
。
我也试过properties.resources.rock.Tag
。
教授还没有向我们展示如何使用标签属性,所以我确信我只是遗漏了一些明显的东西。我是新编码,任何帮助表示赞赏。
我的完整代码在这里,虽然它非常不完整。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Lab5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string[] names =
{
"rock",
"paper",
"scissors",
"lizard" ,
"spock"
};
Bitmap[] bitmaps =
{
Properties.Resources.rock,
Properties.Resources.paper,
Properties.Resources.scissors,
Properties.Resources.lizard,
Properties.Resources.spock,
};
// Following array will not actually be used
// PictureBox[] pics = new PictureBox[bitmaps.Length];
for (int i = 0; i < bitmaps.Length; i++)
{
PictureBox pic = new PictureBox();
pic.Image = bitmaps[i];
pic.Location = new Point(20 + (i * 100), 20);
pic.SizeMode = PictureBoxSizeMode.AutoSize;
Controls.Add(pic);
pic.Click += clickHandler;
}
}
private void displayImages()
{
// Move code from form1_load to here
}
//click handler for every picture
private void clickHandler(object sender, EventArgs e)
{
MessageBox.Show("You clicked a picture box");
}
private void playAgainButton_Click(object sender, EventArgs e)
{
// call display images here
}
}
}
答案 0 :(得分:1)
所有winforms控件(包括PictureBox
)都有一个Tag
属性,可以设置为任何对象。据推测,您的教授希望您使用它将图片链接到相应的名称。
将此行添加到初始化for
的{{1}}循环中:
PictureBoxes
然后在您的点击处理程序中,您可以显示所点击的图片的名称:
pic.Tag = names[i];