Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Имитация нажатия на кнопку


Автор: StepS 5.4.2006, 14:40
Привет, всем !
Вопрос: можно ли симетировать (программно) нажатие на кнопку, т.е чтобы выдно было что кнопка жалась и отпустилась и при этом сработал OnClick на кнопке ?

Автор: Ch0bits 5.4.2006, 17:51
Как сделать чтобы было видимое нажатие не знаю, но чтобы Click сработал, можно PerformClick() использовать.

Автор: Ch0bits 5.4.2006, 18:28
Вот, придумал! smile
На форме 2 кнопки: button1 и button2. При нажатии button1, программно нажимается button2.
Код

using System;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;

namespace WindowsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            button2.Click += new EventHandler(button2_Click);
        }

        void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Button2 clicked!");
        }

        const uint WM_LBUTTONDOWN = 513;
        const uint WM_LBUTTONUP   = 514;
        const int  Period         = 200;
        IntPtr NIL = new IntPtr();

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
               

        private void button1_Click(object sender, EventArgs e)
        {
            SendMessage(button2.Handle, WM_LBUTTONDOWN, NIL, NIL);
            Application.DoEvents();
            Thread.Sleep(Period);
            SendMessage(button2.Handle, WM_LBUTTONUP, NIL, NIL);
        }
    }
}

Автор: mr.DUDA 5.4.2006, 22:04
Точно так же (с пом. WinAPI) можно в любой момент сымитировать нажатие кнопки мыши для любого контрола.

Автор: StepS 7.4.2006, 10:36
Ясно, спасибо!
Очень помогло smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)