我有一个简单的问题,我一直在努力应该从理论上讲很简单。
我想在Visual Studio 2012中的图片框中创建一个动态按钮,每次单击它时都会更改图像。
if (pictureBox4.BackgroundImage == MyProject.Properties.Resources._1)
pictureBox4.BackgroundImage = MyProject.Properties.Resources._2;
else if (pictureBox4.BackgroundImage == MyProject.Properties.Resources._2)
pictureBox4.BackgroundImage = MyProject.Properties.Resources._1;
现在,这并没有真正起作用。它不会检测当前显示的图像并输入if
语句。所以,相反,我已经用这种方式进行了测试。
int b = 1;
if (b == 1)
{
pictureBox4.BackgroundImage = MyProject.Properties.Resources._2;
b = 2;
}
if (b == 2)
{
pictureBox4.BackgroundImage = MyProject.Properties.Resources._1;
b = 1;
}
关闭......但没有雪茄。当我点击它时,图像确实会改变,但只有一次;如果我再次点击它,它会保持不变......
那么......现在怎么样?谢谢你的回答。
答案 0 :(得分:1)
您在两个if子句(Resources._2)中使用相同的图像?
另外,正如TaW指出的那样,当b == 1时,你设置b = 2并检查b == 2.两个if子句都是真的。第二个if应该是"否则如果"
if (b == 1)
{
pictureBox4.BackgroundImage = MyProject.Properties.Resources._2;
b = 2;
}
else if (b == 2)
{
pictureBox4.BackgroundImage = MyProject.Properties.Resources._1;
b = 1;
}
当然你可以使用else子句:
if (b == 1)
{
pictureBox4.BackgroundImage = MyProject.Properties.Resources._2;
b = 2;
}
else
{
pictureBox4.BackgroundImage = MyProject.Properties.Resources._1;
b = 1;
}
或者,如果您不想要整数变量,那么您可以试试这个:
1)从资源中拉出一次图像,然后将它们放在静态成员中。
private static readonly Image Image1 = MyProject.Properties.Resources._1;
private static readonly Image Image2 = MyProject.Properties.Resources._2;
2)更改条件以使用静态副本而不是资源属性(每次都返回一个新对象)。
if (pictureBox4.BackgroundImage == Image2)
{
pictureBox4.BackgroundImage = Image1;
}
else
{
pictureBox4.BackgroundImage = Image2;
}
答案 1 :(得分:1)
以下是我的任务解决方案:在MyProject
我有一个名为Resource1
的资源文件和六个来自Images
到_0
的{{1}}:< / p>
_5
我使用简单的int index = 0;
private void anImageButton_Click(object sender, EventArgs e)
{
index = (index + 1) % 6;
anImageButton.Image =
(Bitmap)MyProject.Resource1.ResourceManager.GetObject("_" + index);
}
代替PictureBox
,但它也适用于您的Button anImageButton
..