PictureBox1_Click и другое изображение - PullRequest
0 голосов
/ 19 апреля 2010

Привет, у меня есть специальный запрос ... Я пытаюсь сделать обычную кнопку для свертывания и выхода ... Я хочу три разных изображения, например, кнопку с выходом:

1) Стабильно открытое окно имеет exit_1.png

2) При наведении мыши на него отображается exit_2.png

3) Когда вы выходите из мыши, он снова отображает стандартный exit_1.png

4) Когда вы нажимаете на нее (щелкаете), она отображает exit_3.png => эту ситуацию, которую я не знаю, как решить в Visual Basic - спасибо за помощь.

Мой код:

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
    Me.WindowState = FormWindowState.Minimized
    PictureBox1.Image = My.Resources.exit_3
End Sub

Public Sub PictureBox1_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseHover
    PictureBox1.Image = My.Resources.exit_2
End Sub

Public Sub PictureBox1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
    PictureBox1.Image = My.Resources.exit_1
End Sub

Изображение exit_3 не отображается с этим кодом после нажатия на него. Картинки exit_2 и exit_1 работают нормально.

Ответы [ 2 ]

0 голосов
/ 07 июля 2010

MouseLeave запускается после события Click, когда форма свернута. Для изображения установлено значение exit_3 в обработчике Click, а затем немедленно возвращается к exit_1 в обработчике Leave. Вот один из способов исправить это:

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
    Me.WindowState = FormWindowState.Minimized
End Sub

Public Sub PictureBox1_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseHover
    PictureBox1.Image = My.Resources.exit_2
End Sub

Public Sub PictureBox1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
    if Me.WindowState = FormWindowState.Minimized then
        PictureBox1.Image = My.Resources.exit_1
    else
        PictureBox1.Image = My.Resources.exit_3
    end if
End Sub
0 голосов
/ 23 апреля 2010

измените обработчик click на mousedown и mouseup для обмена изображениями

Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseDown
    PictureBox1.Image = My.Resources.exit_3
End Sub

Private Sub PictureBox1_MouseUp(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseUp
    PictureBox1.Image = My.Resources.exit_2
End Sub

и обработчик click для кода

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
    Me.WindowState = FormWindowState.Minimized
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...