button.BackgroundImage = <pngfile>ничего не делает - PullRequest
0 голосов
/ 20 января 2012

Я хочу изменить BackgroundImage кнопки, когда вы нажимаете один раз, а затем снова переключаете его на исходное при повторном нажатии (и оно будет работать снова и снова). Мой фрагмент кода такой:

private void handButton_Click(object sender, EventArgs e)
    {
        if (handButton.BackgroundImage == WindowsFormsApplication1.Properties.Resources.Hands_Right)
        {
            handButton.BackgroundImage = WindowsFormsApplication1.Properties.Resources.Hands_Left;
        }
        else if (handButton.BackgroundImage == WindowsFormsApplication1.Properties.Resources.Hands_Left)
        {
            handButton.BackgroundImage = WindowsFormsApplication1.Properties.Resources.Hands_Right;
        }
    }

Но когда я запускаю программу и нажимаю кнопку; Ничего не произошло. Изображения размером 32x32, и я ясно вижу исходное изображение. При нажатии исходное изображение остается там. Других переменных, влияющих на этот фрагмент, нет (по крайней мере, поиск «handButton» получает результаты только из этого фрагмента).

Есть предложения? У меня нет ошибок, поэтому я подозреваю, что поступаю неправильно. Есть ли лучший способ менять изображения вперед и назад?

1 Ответ

3 голосов
/ 20 января 2012

Класс Properties.Resources не работает так, как вы думаете. Свойство, такое как Hands_Right, на самом деле возвращает новое растровое изображение, а не какой-либо объект, который был возвращен ранее. Это не сработает очень хорошо, так как изменение растрового изображения также приведет к изменению свойства от его дизайна.

Так что ваши выражения if () никогда не оцениваются как true. Отслеживайте состояние кнопки отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...