在C#中单击时禁用和更改按钮图像

时间:2011-10-10 18:28:16

标签: c# winforms image button click

我有一个按钮,点击我想要被禁用,它的背景图像被更改为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中

3 个答案:

答案 0 :(得分:1)

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

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

 Level1Form(bool enableButton) {
     initComponent();

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

或者,再次抓取相同的表单并重复使用它。您将需要在某处保留对它的引用并告诉它再次显示自己。或者,您可以从Application.OpenForms

中获取它

答案 1 :(得分:0)

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

您需要重新显示原始实例。

答案 2 :(得分:0)

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

Level1Form l1Form;

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

private void Reshow() 
{
     l1Form.Show();
}