Мне нужно эмулировать событие нажатия кнопки (не выполнить функцию, которая завязана на это событие, а именно заставить систему обработать его, при этом само нажатие кнопки не будет производиться). В Visual C++ была функция SendMessage. Есть ли какой-то ее аналог в C# или эту операцию можно выполнить как-то иначе?..
03.11.04 17:27: Перенесено модератором из '.NET' — AndrewVK
Для посылки сообщения в среде .NET нужно импортировать SendMessage и использовать ее как обычно.
Вам, вероятно, подойдет это:
Как сделать, чтобы программа сама нажимала клавиши?
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Можно и не импортировать, если только автора устроит такой вариант
(использование метода btn.PerformClick();):#region Using directives
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
#endregion
namespace WindowsApplication1
{
partial class Form1 : Form
{
public Form1()
{
//
// Создание кнопки
//
Button btn = new Button();
//
// "Вешаем" обработчик на событие [Click]
//
btn.Click += new EventHandler(btn_Click);
//
// Инициируем нажатие на кнопке
//
btn.PerformClick();
}
//
// Обработчик события [Click]
//
void btn_Click(object sender, EventArgs e)
{
//
// Сообщаем о результатах (т.е. Кнопка нажата!)
//
MessageBox.Show("Кнопка: Меня нажали!!!");
}
}
}
.NET FW 1.1 (2.0)
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
>Можно и не импортировать, если только автора устроит такой вариант (использование метода btn.PerformClick()
:
Может конечно и устроит, только если ссылка на Button есть и если не нужно выполнять визуальное изменение состояния кнопки.
Кстати, в
Как выполнить эмуляцию кликов мыши? есть пример.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Такс... Попробую объяснить поконкретнее... Я эмулирую элемент ComboBox с помощью TextBox + Grid. Т.е. по нажатию клавиши в TextBox я показываю грид и перепрыгиваю на соответствующую строчку этого грида. А дальше я хочу использовать встроенную функцию грида — AutoSearch — т.е. чтобы все дальнейшие прыжки по гриду при нажатии клавиш осуществлялись без моего участия.
Таким образом, мне нужно эмулировать самое первое нажатие клавиши в гриде (которое делается еще в TextBox). Потому что иначе я имею следующую картинку: по первой клавише я выбираю правильную строчку грида. Но все следующие обрабатываются гридом безотносительно первой (поскольку у него какой-то свой буфер введенных символов для поиска и к этому буферу нет доступа). А мне нужно, чтобы AutoSearch начинал работать с самого начала