用图片框切换图片框的图片on_click c#

时间:2016-03-17 08:18:32

标签: c# winforms

我的图片框中有一个图像使用资源我想要的是更改图像当我点击icon.png它应该在图片框中更改为icon1.png然后当我再次点击图片框它应该被改为icon.png

private void pictureBox10_Click(object sender, EventArgs e)
    {
        if (pictureBox10.ImageLocation != @"icon1.png")
        {
            var image = Image.FromFile(@"icon1.png");
            pictureBox10.Image = image;

        }
        if (pictureBox10.ImageLocation == @"icon1.png")
        {
            var image = Image.FromFile(@"icon.png");
            pictureBox10.Image = image;
        }

    }

但它不起作用请帮我解决这个问题。

3 个答案:

答案 0 :(得分:2)

您从图像位置获取空值,因为当您将图片分配给图像属性时,它未设置。有几种方法可以解决这个问题:

  1. 更改分配,以便使用ImageLocation

    进行分配
    pictureBox10.ImageLocation = @"icon1.png";
    
  2. 更改检查以查看Image属性是否等于新图像

    pictureBox10.Image == Image.FromFile(@"icon.png");
    
  3. 在设置图像属性

    的同时设置图像位置
    pictureBox10.Image == Image.FromFile(@"icon.png");
    pictureBox10.ImageLocation = @"icon.png" ;
    
  4. 我觉得第二个可能不会平等回来,你可能想尝试第一个或第三个

    建议代码:

    private void pictureBox10_Click(object sender, EventArgs e)
    {
        if (pictureBox10.ImageLocation != @"icon1.png")
        {
            pictureBox10.ImageLocation = @"icon1.png"
    
        }
        if (pictureBox10.ImageLocation == @"icon1.png")
        {
            pictureBox10.ImageLocation = @"icon.png";
        }
    
    }
    

    或者:

    private void pictureBox10_Click(object sender, EventArgs e)
    {
        if (pictureBox10.ImageLocation != @"icon1.png")
        {
            var image = Image.FromFile(@"icon1.png");
            pictureBox10.Image = image;
            pictureBox10.ImageLocation = @"icon1.png";
    
        }
        if (pictureBox10.ImageLocation == @"icon1.png")
        {
            var image = Image.FromFile(@"icon.png");
            pictureBox10.Image = image;
            pictureBox10.ImageLocation = @"icon.png";
        }
    
    }
    

    您还需要更新初始属性设置以设置ImageLocation而不是Image属性,或者在设置Image文件的同时设置ImageLocation

    修改

    离开我的头顶,最初设置属性,你可以这样做(Source):

    protected override void OnLoad(EventArgs e){
        pictureBox10.ImageLocation = @"icon.png";
    }
    

    虽然我不记得是否已创建PictureBox,如果没有,则改为使用onShown事件(Source

    编辑2

    以下是创建事件和设置属性的另一种方法,首先按照步骤here将事件onShown添加到表单中。您需要单击表单本身而不是表单中的控件来查找事件。

    完成后,在事件内添加以下代码:

    pictureBox10.ImageLocation = @"icon.png";
    

    这应该有助于解决您的问题

答案 1 :(得分:0)

尝试将图片直接引用到图片框中:

pictureBox10.Image = Image.FromFile(@"Images\a.bmp");

Source

答案 2 :(得分:0)

感谢每一位感谢,但是有一些问题,但已经解决了这个问题,所以写了实际的代码......

public Form1()
    {
        InitializeComponent();
        pictureBox10.ImageLocation = @"icon.png";
    }
    private void pictureBox10_Click(object sender, EventArgs e)
    {

        if (pictureBox10.ImageLocation == @"icon1.png")
        {
            pictureBox10.ImageLocation = @"icon.png";

        }
        else
        {
            pictureBox10.ImageLocation = @"icon1.png";
        }



    }

首先你必须初始化图像位置然后使用两个如果条件我认为这是主要的问题使用,如果否则每个人都有很多特别的东西到@Draken