在c#中禁用并更改按钮图像

本文关键字:按钮 图像 | 更新日期: 2023-09-27 18:10:57

我想在点击按钮时禁用它并将其背景图像更改为null这是我在点击按钮

时设置的代码
    private void levelOne1001_Click(object sender, EventArgs e)
    {
        levelOne1001.Enabled = false;
        levelOne1001.BackgroundImage = null;
        scoreClass.genRandomNumber(100);
        scoreClass.valOfQuestion = 100;
        q1001 = true;
        openQuestionForm();
    }

这是openQuestionForm();

的代码
    private void openQuestionForm()
    {
        QuestionForm qForm = new QuestionForm();
        scoreClass.iCount++;
        qForm.Show();
        this.Hide();
    }

我在这里调用这个表单

     Level1Form l1Form = new Level1Form();
     l1Form.Show();

这个过程是如何工作的,点击原始表单上的按钮进入问题表单,点击问题表单上的按钮回到原始表单。但当我回到原始表单按钮仍然是启用的,图像仍然在那里。有办法解决这个问题吗?

编辑:忘了说这是在WinForms

在c#中禁用并更改按钮图像

你正在实例化一个新的Level1Form,所以它返回到它的默认状态,导致按钮返回到它的默认状态。有几种可能的方法:

在Level1Form的构造函数中添加一个参数,指示按钮应该处于什么状态,例如

 Level1Form(bool enableButton) {
     initComponent();
     if(!enableButton) {
         levelOne1001.Enabled = false;
         levelOne1001.BackgroundImage = null;            
     }
  }

或者,再次抓取相同的表单并重用它。你需要在某个地方保存对它的引用,并告诉它再次显示自己。或者,您可以从Application.OpenForms

中获取它

您正在创建一个新的Level1Form实例,它与您修改的现有实例无关。

您需要重新显示原始实例

您需要在方法外部的成员中记住您的初始表单实例,并在其上调用show。

Level1Form l1Form;
private void FirstTimeCreate()
{
   l1Form = new Level1Form();
}
private void Reshow() 
{
     l1Form.Show();
}

首先将ImageList1添加到您的设计页面。然后点击图片列表上方的箭头,点击"选择图片"并添加所有不同类型的图像,您希望您的按钮在点击它时发生变化。然后编写下面的代码:

int im = 3;
        private void levelOne1001_Click(object sender, EventArgs e)
            {
levelOne1001.BackgroundImage = imageList1.Images[im];
switch (im)
            {
                case 0:
                case 1:
                case 2:
                    im++;
                    break;
                default:
                    im =0; // assuming you have 3 images; if you are at image 3 and click then let it go to image with index 0 (which is the beginning).
                    break;
            }
                // levelOne1001.Enabled = false; // you can add this code above as you see fit
            }