PerformClick на PictureBox - PullRequest
       5

PerformClick на PictureBox

0 голосов
/ 30 апреля 2020

Я до сих пор использую методы для нажатия кнопки после того, как я нажму другую кнопку. (я нажимаю кнопку «A», и она активирует кнопку «B»)

buttonDeleteFields.PerformClick();

Теперь, поскольку я обновил дизайн, я заменил эту кнопку на иконку (изображение), но метод PerformClick, с PictureBox, не работает. Можете ли вы дать мне метод, который решит эту проблему? (Я нажимаю кнопку «А», и она активирует поле «B»)

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Вам просто нужно вызвать метод, связанный с событием PictureBox.Click в методе button1_Click.

private void pictureBox1_Click(object sender, EventArgs e)
{
    MessageBox.Show("123");
}

private void button1_Click(object sender, EventArgs e)
{
    pictureBox1_Click(this.pictureBox1, e);
}
1 голос
/ 30 апреля 2020

Чтобы полностью эмулировать событие Click (как если бы пользователь нажал на графическое поле),

Добавьте их в свой класс формы:

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

private int WM_LBUTTONDOWN = 0x0201;
private int WM_LBUTTONUP = 0x0202;

И вызовите вот так внутри вашей кнопки событие клика:

private void button1_Click(object sender, EventArgs e)
{
    // OLD CODE: Used to perform click on button 2,
    // before it was changed to a picture box
    // buttonDeleteFields.PerformClick();

    // new code, emulating picture box click:
    SendMessage(pictureBoxDeleteFields.Handle, WM_LBUTTONDOWN, 0, 1);
    SendMessage(pictureBoxDeleteFields.Handle, WM_LBUTTONUP, 0, 0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...