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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработчик событий мыши 
V
    Опции темы
okaton
Дата 18.9.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток. 
Подскажите пожалуйста как мне в обработчике событий мыши textBox (не знаю как точно выразиться)
обратить нажатие кнопки в ноль.
То есть смысл такой у меня на форме textBox он должен быть прозрачный для мыши

Код

private void textBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right)
            {
               // Здесь надо как-то проигнорировать нажатие
            }
        }


Фокус должен остаться на форме

P.S. кстати можно ли фокус как-то обратить на форму?

По поводу фокуса. У меня на форме размещен textBox (tabstop=false), в свойствах формы события keypress стоит обработчик на enter.
На PreviewKeyDown тоже стоит обработчик который не дает стрелками фокус переместить на textbox. Смысл в том что когда загружаем форму по нажатию на enter должно произойти событие, но если нажать на textbox мышью фокус переместиться на него, обратно уже не получиться и enterОМ можно утыкаться (фокус переместился). Как сделать textbox прозрачный для мыши?

Это сообщение отредактировал(а) okaton - 18.9.2007, 21:14
PM MAIL   Вверх
iad
Дата 18.9.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 10.9.2007
Где: Москов

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



Код

        public class MyTextBox : TextBox
        {
            protected override void OnMouseDown(MouseEventArgs e)
            {
                return;
                //base.OnMouseDown(e); - убили
            }
        }

Цитата(okaton @  18.9.2007,  18:45 Найти цитируемый пост)
Фокус должен остаться на форме
 а такое бывает? smile 

Это сообщение отредактировал(а) iad - 18.9.2007, 19:45
PM MAIL   Вверх
okaton
Дата 18.9.2007, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как это едят?

Не работает

Это сообщение отредактировал(а) okaton - 18.9.2007, 20:12
PM MAIL   Вверх
iad
Дата 18.9.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 10.9.2007
Где: Москов

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



Цитата(okaton @  18.9.2007,  21:05 Найти цитируемый пост)
Как это едят?
С помощью ООП
Цитата(okaton @  18.9.2007,  21:05 Найти цитируемый пост)
Не работает
Удивишься, работает!

PM MAIL   Вверх
okaton
Дата 18.9.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Что такое ООП, почему-то у меня не работает (наверно туплю)

я правильно делаю?

Код

private void textBox3_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right)
            {
                base.OnMouseDown(e);                
            } 
        } 


Код

public class MyTextBox : TextBox
        {
            protected override void OnMouseDown(MouseEventArgs e)
            {
                return;
            }
        }

PM MAIL   Вверх
iad
Дата 18.9.2007, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 10.9.2007
Где: Москов

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



Цитата(okaton @  18.9.2007,  21:23 Найти цитируемый пост)
я правильно делаю?
нет. А ООП - объектно ориентированное программирование... Одно из его особенностей -наследование.. Можно наследовать контрол и переопределить его функции. Это:
Код

public class MyTextBox : TextBox
        {
            protected override void OnMouseDown(MouseEventArgs e)
            {
                return;
            }
        }
-пример наследования с блокированием некоторых возможностей предка
сделай textBox3 типа MyTextBox, а не типа TextBox...

Это сообщение отредактировал(а) iad - 18.9.2007, 20:40
PM MAIL   Вверх
okaton
Дата 18.9.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Может кто-нибуть объяснить мне как решить мою проблему?
Желательно более доступно.

По поводу фокуса. У меня на форме размещен textBox (tabstop=false), в свойствах формы события keypress стоит обработчик на enter.
На PreviewKeyDown тоже стоит обработчик который не дает стрелками фокус переместить на textbox. Смысл в том что когда загружаем форму по нажатию на enter должно произойти событие, но если нажать на textbox мышью фокус переместиться на него, обратно уже не получиться и enterОМ можно утыкаться (фокус переместился). Как сделать textbox прозрачный для мыши? 
PM MAIL   Вверх
NikeDeForest
Дата 19.9.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну а если в обработчике события мыши делать установку фокуса на форму?
--------------------
Еще один вопрос ...
PM   Вверх
okaton
Дата 19.9.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как? Уменя не получается. Я такого обработчика не нашел.
PM MAIL   Вверх
Aleksey2007
Дата 19.9.2007, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 15.9.2007
Где: Казахстан

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



Попробуй так!
По событию навода курсора мыши MouseMove на TextBox делай его запретным т.е

TextBox.Enabled=false

думаю должно работать

Добавлено через 1 минуту и 50 секунд
И по событиям клика тоже, но такая лобуда столько событий надо обрабатывать но ты попробуй если так очень нужно бывает и не такое!
PM MAIL   Вверх
okaton
Дата 20.9.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Если так сделать то текст  в TextBox станет серым плохочитаемым, надо подругому
PM MAIL   Вверх
Experimenter
Дата 20.9.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



okaton, последний пост iad'а перечитай, особенно последние две строчки


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
okaton
Дата 20.9.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Experimenter,  Я перечитал если честно я не особенно представляю себе что это и как это работает:(( Мне надо поподробней


Это сообщение отредактировал(а) okaton - 20.9.2007, 20:11
PM MAIL   Вверх
Experimenter
Дата 20.9.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



okaton, там, где ты объявляешь textbox3, вместо:
Код

TextBox textbox3 = new TextBox();

объяви:
Код

MyTextBox textbox3 = new MyTextBox();

и должно получиться...


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
okaton
Дата 20.9.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Experimenter, а где он объявляется (я его не объявлял он сам сгенерировался)? в дезайнере формы такого объявления я не нашел там только так

Код

this.textBox3 = new System.Windows.Forms.TextBox();


Это сообщение отредактировал(а) okaton - 20.9.2007, 20:37
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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