Как послать контролу сообщение?
От: mst Россия  
Дата: 02.11.04 15:26
Оценка:
Мне нужно эмулировать событие нажатия кнопки (не выполнить функцию, которая завязана на это событие, а именно заставить систему обработать его, при этом само нажатие кнопки не будет производиться). В Visual C++ была функция SendMessage. Есть ли какой-то ее аналог в C# или эту операцию можно выполнить как-то иначе?..

03.11.04 17:27: Перенесено модератором из '.NET' — AndrewVK
Как послать контролу сообщение?
От: Аноним  
Дата: 02.11.04 21:52
Оценка:
Для посылки сообщения в среде .NET нужно импортировать SendMessage и использовать ее как обычно.
Вам, вероятно, подойдет это: Как сделать, чтобы программа сама нажимала клавиши?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Как послать контролу сообщение?
От: Аноним  
Дата: 02.11.04 22:26
Оценка:
Можно и не импортировать, если только автора устроит такой вариант (использование метода 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
ссылка на оригинальное сообщение
Как послать контролу сообщение?
От: Аноним  
Дата: 02.11.04 22:50
Оценка:
>Можно и не импортировать, если только автора устроит такой вариант (использование метода btn.PerformClick():

Может конечно и устроит, только если ссылка на Button есть и если не нужно выполнять визуальное изменение состояния кнопки.
Кстати, в Как выполнить эмуляцию кликов мыши? есть пример.



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Как послать контролу сообщение?
От: mst Россия  
Дата: 03.11.04 08:19
Оценка:
Такс... Попробую объяснить поконкретнее... Я эмулирую элемент ComboBox с помощью TextBox + Grid. Т.е. по нажатию клавиши в TextBox я показываю грид и перепрыгиваю на соответствующую строчку этого грида. А дальше я хочу использовать встроенную функцию грида — AutoSearch — т.е. чтобы все дальнейшие прыжки по гриду при нажатии клавиш осуществлялись без моего участия.
Таким образом, мне нужно эмулировать самое первое нажатие клавиши в гриде (которое делается еще в TextBox). Потому что иначе я имею следующую картинку: по первой клавише я выбираю правильную строчку грида. Но все следующие обрабатываются гридом безотносительно первой (поскольку у него какой-то свой буфер введенных символов для поиска и к этому буферу нет доступа). А мне нужно, чтобы AutoSearch начинал работать с самого начала
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.