我正在尝试使用图片框执行以下操作:
搜索具有特殊图像的图片框,我的方法返回一个包含此图像的框。
示例:
if (picturebox1.Tag == "special") {
return 1; //returns value 1 as in picturebox1 contains it.
}
现在,当我点击pictureBox2时,我想让它用包含特殊图片的图片框切换(我总共有10个带图片的图片盒,只有一个盒子包含特殊图片)
在picturebox2上点击活动:
private void pictureBox2_Click(object sender, EventArgs e)
{
performSwitch(2); //2 meaning picturebox "2"
}
它调用的方法:
public void performSwitch(int pictureBoxWaarde)
{
switch (pictureBoxWaarde)
{
case 2:
pictureBox10.Image = pictureBox2.Image; //else picture overwrites
pictureBox2.Image = pictureBox1.Image;
pictureBox1.Image = pictureBox10.Image;
break;
}
}
这段代码有效,但是我不想为每个组合制作if-else语句的TONS。所以为了让它“聪明”,我需要这样的东西:
public void performSwitch(int pictureBoxWaarde)
{
switch (pictureBoxWaarde)
{
pictureBox10.Image = pictureBox2.Image; //else picture overwrites
pictureBox2.Image = pictureBox"+findBlackBox+".Image;
pictureBox"+findBlackBox()+".Image = pictureBox10.Image;
break;
}
}
如果这样可行,它将获得特殊的箱号并且无需大量的if-else即可工作。我该怎么做?
答案 0 :(得分:0)
我不确定我是否完全明白你想要达到的目标,但你总能找到一个名字的控件。
假设您有一个变量string m_specialPictureBoxName;
,它始终包含当前特殊图片框的名称,您可以执行以下操作:
public void performSwitch(int pictureBoxWaarde)
{
// Get current special picture box
PictureBox currentSpecial = this.Controls.Find(m_specialPictureBoxName, true) as PictureBox;
// Get new special picture box
m_currentPictureBoxName = String.Format("pictureBox{0}", pictureBoxWaarde);
PictureBox clicked = this.Control.Find(m_currentPictureBoxName, true) as PictureBox;
// Swap images
Image temp = currentSpecial.Image;
currentSpecial.Image = clicked.Image;
clicked.Image = temp;
}
此外,我在不使用临时pictureBox10
作业的情况下交换图像 - 我不确定您是否希望pictureBox10
获取图像。如果这样做,您可以将其替换为之前的代码而不是Image temp = ...
行。
答案 1 :(得分:0)
写下这样的方法
private void ApictureBox_Click(object sender, EventArgs e)
{
var clickedPicture = sender as PictureBox;
// iterate through all picture controls of the current form
for (var pic in this.Controls.OfType<PictureBox>())
if (pic.Tag=="special")
{
var temp = clickedPicture.Image;
clickedPicture.Image = pic.Image;
pic.Image = temp;
}
}
对于第一步,您可以手动执行,也可以使用类似的循环在表单构造函数中分配事件处理程序。