Изменить изображение кнопки после нажатия на нее - PullRequest
0 голосов
/ 02 марта 2012

У меня есть картинка с изображением, cb.

PBr1_1.Image = new Bitmap(@"Logos\\Images\\cb.png");

Я хотел бы изменить изображение на cg.png и выполнить некоторые действия, когда я нажму на это изображение.Я пытался сделать что-то подобное, но безуспешно:

private void PBr1_1_Click(object sender, EventArgs e)
{    
   if (PBr1_1.Image.ToString() == "cb.png")
          {
             PBr1_1.Image = new Bitmap(@"Logos\\Images\\cg.png");
            // Do some stuff.
          }
}

И затем сделать то же самое, когда я нажимаю на изображение с помощью cb.Для визуализации этого cb - изображение кнопки черного круга, а cg - зеленое.

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Джейсон прав, вам следует использовать какое-то временное хранилище для сохранения текущего растрового изображения.
Свойство Tag полезно в таких ситуациях.Вот пример кода: (без обработки ошибок)

где-то в вашем событии загрузки

PBr1.Tag = "cb.png";`
PBr1_1.Image = new Bitmap(Path.Combine("Logos\\Images", PBr1.Tag.ToString());

и затем при нажатии кнопки

private void PBr1_1_Click(object sender, EventArgs e) 
{     
   string imgPath = "Logos\\Images";
   PBr1_1.Image.Dispose();
   PBr1_1.Tag = (PBr1_1.Tag == "cb.png" ? "cg.png") : "cb.png") ; 
   Bitmap bm = new Bitmap(Path.Combine(imgPath, PBr1.Tag.ToString());
   PBr1_1.Image = bm; 
} 
0 голосов
/ 02 марта 2012

Вы уверены, что "PBr1_1.Image.ToString ()" действительно возвращает только имя изображения?Может быть, вы должны проверить это, написав PBr1_1.Image.ToString () в консоль или что-то подобное

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