Отключить и изменить изображение кнопки при нажатии в C # - PullRequest
0 голосов
/ 10 октября 2011

У меня есть кнопка, которую при нажатии я хочу отключить, и это фоновое изображение, которое нужно изменить на ноль. Вот код, который у меня появляется при нажатии кнопки

    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 ]

1 голос
/ 10 октября 2011

Вы создаете экземпляр новой Level1Form, поэтому она возвращается в состояние по умолчанию, в результате чего кнопка возвращается в состояние по умолчанию. Есть несколько возможных подходов:

Добавить параметр в конструктор Level1Form, который указывает, в каком состоянии должна быть кнопка, что-то вроде

 Level1Form(bool enableButton) {
     initComponent();

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

Или снова возьмите ту же форму и используйте ее снова. Вам нужно будет где-то сохранить ссылку на нее и сказать, чтобы она снова показала себя. Кроме того, вы можете получить его из Application.OpenForms

0 голосов
/ 10 октября 2011

Вам нужно запомнить начальный экземпляр формы в элементе вне метода и вызвать show для него.

Level1Form l1Form;

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

private void Reshow() 
{
     l1Form.Show();
}
0 голосов
/ 10 октября 2011

Вы создаете новый экземпляр Level1Form, который не имеет ничего общего с существующим экземпляром, который вы изменили.

Вам необходимо повторно показать исходный экземпляр.

...