Модераторы: gambit, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> keys 
:(
    Опции темы
Legolas
Дата 17.6.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



Хочу написать простенькую прогу, которая при нажатии клавиши выдавала messagebox с названием клавиши. Например, я нажал клавишу "а" - сообщение "вы нажали клавишу "а"". Итак для любой клавиши. Что нужно использовать?
PM MAIL   Вверх
stab
Дата 17.6.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



Код

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show(e.KeyChar.ToString());
}


у формы KeyPreview в true не забудь выставить.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Legolas
Дата 17.6.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



Вставляю в свой код, делаю keypreview = true. Не срабатывает.  smile

Добавлено через 3 минуты и 5 секунд
Код

public Form1()
        {
            
            InitializeComponent();
            aTimer = new System.Timers.Timer();
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            aTimer.Interval = 10000;
            aTimer.Enabled = true;
            GC.KeepAlive(aTimer);          
        
        }
        public System.Timers.Timer aTimer;
        private void button1_Click(object sender, EventArgs e)
        {
            
        }

        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            MessageBox.Show(e.KeyChar.ToString());
        }

        public void OnTimedEvent(object sender, ElapsedEventArgs e)
        {
            ...
        }

PM MAIL   Вверх
stab
Дата 17.6.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



обработчик назначил на KeyPress?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Legolas
Дата 17.6.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



В смысле?
PM MAIL   Вверх
stab
Дата 17.6.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



у формы событие KeyPress есть, на него надо назначить обработчик Form1_KeyPress.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Legolas
Дата 17.6.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



Код

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            MessageBox.Show(e.KeyChar.ToString());
        }

Это?

PM MAIL   Вверх
stab
Дата 17.6.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



при выбранной форме, в редакторе свойств кнопочка Events, там событие KeyPress, на него обработчик Form1_KeyPress.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Legolas
Дата 18.6.2007, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



Всё сделал - ноль эффекта(
PM MAIL   Вверх
stab
Дата 19.6.2007, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



засылай проект на форум, будем разбираться.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Legolas
Дата 19.6.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



Вот проект.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  WindowsApplication13.rar 31,94 Kb
PM MAIL   Вверх
Wanderer2019
Дата 19.6.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 2
Всего: 17



у тебя обработчик события KeyPress не привязан к форме... т.е. создай его заново через окно Properties->Events формы Form1.

или просто добавь в файл Form1.Designer.cs строку:
Код

this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);

PM ICQ MSN   Вверх
Legolas
Дата 19.6.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



тоже пробовал.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  WindowsApplication13.rar 31,94 Kb
PM MAIL   Вверх
Wanderer2019
Дата 19.6.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 2
Всего: 17



повторюсь!

Цитата(Wanderer2019 @  19.6.2007,  14:45 Найти цитируемый пост)
у тебя обработчик события KeyPress не привязан к форме... т.е. создай его заново через окно Properties->Events формы Form1.

или просто добавь в файл Form1.Designer.cs строку:
    
Код

this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);




содержание твоей секции Form1 файла Form1.Designer.cs

Код

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
            this.ClientSize = new System.Drawing.Size(859, 266);
            this.Controls.Add(this.button1);
            this.KeyPreview = true;
            this.Name = "Form1";
            this.ShowIcon = false;
            this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
            this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
            this.Text = "Form1";
            this.ResumeLayout(false);


Где там информация о том, что событие KeyPress нужно обрабатывать????????

PM ICQ MSN   Вверх
Legolas
Дата 19.6.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



Спасибо, немного "ступил"  smile  Всё пашет. 
Еще раз спасибо cully и Wanderer2019
PM MAIL   Вверх
Legolas
Дата 19.6.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



Извиняюсь, вопрос в другом: 
Мне нужно запускать метод 
Код

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            string abc = (e.KeyChar.ToString());            
        }


только если str в нижнем методе  == "vls"
Код

public void OnTimedEvent(object sender, ElapsedEventArgs e)
        {
            Process[] processes = Process.GetProcessesByName("vls");
            foreach (Process p in processes)
            {
                string str = processes[0].MainWindowTitle;
                if (str == "vls")
                {
                    aTimer.Stop();
                    aTimer.Enabled = false;
                    
                    MessageBox.Show("Ready!");

                    ????????????????????????
                }
                else { }
                

            }


Как это можно реализовать?



Это сообщение отредактировал(а) Legolas - 19.6.2007, 17:00
PM MAIL   Вверх
Legolas
Дата 19.6.2007, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: нет
Всего: 5



с этим вроде разобрался. возник еще один вопрос: если окно формы свернуто или не находится на переднем плане, то считывание нажтия клавиш не срабатывает. Как сделать чтобы всё работало и в свернутом состоянии?
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0674 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.