CodeNet - все для программиста!CodeNet - 10 лет - мегавстреча!
Все для программиста!
  Статьи   Форум   Исходники   Каталог   Хостинг   IRC  
 Справочник функций

Ваш аккаунт

Логин:
Пароль:

Забыли пароль?
Регистрация

Почтовая рассылка



Подписчиков: 6553
(Из них RSS: 0)

Последний выпуск: 22.06.2010
Старый 17.07.2009, 12:38   #1
MixerLosev
Начинающий
 
Регистрация: 13.07.2009
Сообщений: 26
Вес репутации: 0
MixerLosev is on a distinguished road
По умолчанию Как получить имя контрола по координатам мыши

Имеется форма. На ней есть несколько контролов.
Нужно по наведению мыши на контрол получать его имя.
Попробовал использовать такую конструкцию:
------------------------------------------------------------------
private void Form1MouseMove(object sender, MouseEventArgs e)
{

Control c = new Control();
c = this.GetChildAtPoint(new Point(e.X, e.Y));
}
-------------------------------------------------------------------
Не работает. Объект c - всегла null.

Кто-нибудь знает в чем проблема?
MixerLosev вне форума   Ответить с цитированием
Реклама
Старый 17.07.2009, 13:07   #2
nikitozz
Ветеран
 
Аватар для nikitozz
 
Регистрация: 09.03.2007
Сообщений: 1,003
Вес репутации: 20
nikitozz has a spectacular aura aboutnikitozz has a spectacular aura aboutnikitozz has a spectacular aura about
Отправить сообщение для nikitozz с помощью ICQ
По умолчанию

Просто потому, что когда вы водите мышью над контролом сообщения мыши будет получать он, а не форма.

P.S. А зачем писать это?
Код:
Control c = new Control();
__________________
"For every complex problem, there is a solution that is simple, neat, and wrong." H.L. Mencken
nikitozz вне форума   Ответить с цитированием
Старый 17.07.2009, 14:58   #3
MixerLosev
Начинающий
 
Регистрация: 13.07.2009
Сообщений: 26
Вес репутации: 0
MixerLosev is on a distinguished road
По умолчанию

Ага понятно.
Как получить имя контрола зная координаты курсора мыши?
MixerLosev вне форума   Ответить с цитированием
Старый 17.07.2009, 15:39   #4
Ander Skirnir
Специалист
 
Аватар для Ander Skirnir
 
Регистрация: 08.06.2009
Адрес: Киев
Сообщений: 100
Вес репутации: 4
Ander Skirnir will become famous soon enough
По умолчанию

Предлагаю в конструкторе формы подписать OnHover'ы всех дочерних контролов на функцию, записывающую текущий контрол в некую переменную:

C# Код:
  1. public partial class Form1 : Form
  2. {
  3.     private Control curctrl;
  4.  
  5.     public Form1()
  6.     {
  7.         InitializeComponent();
  8.         ListenControls();
  9.     }
  10.  
  11.     private void ListenControls()
  12.     {
  13.         // лямбда-функция, записывающая в curctrl текущий контрол
  14.         Action<object, EventArgs> hoverfunc =
  15.             (s,e) => curctrl = (Control)s;
  16.  
  17.         // подписываем событие формы OnHover на hoverfunc
  18.         this.MouseHover += new System.EventHandler(hoverfunc);
  19.  
  20.         // подписываем событие OnHover всех дочерних контролов формы на hoverfunc
  21.         foreach (Control ctrl in this.Controls)
  22.             ctrl.MouseHover += new System.EventHandler(hoverfunc);           
  23.     }
  24. }

Таким образом, в переменной curctrl и будет хранится нужный вам контрол.
__________________
Киевский Политехнический Институт
Институт Прикладного Системного Анализа
Системы Автоматизации Проектных Работ
Ander Skirnir вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить объект контрола на GridView ArtemS2006 ASP.NET 2 22.09.2008 09:44
Как получить ID контрола? Zloi_kefir Microsoft Visual C++ 4 03.04.2008 15:25
Вывод данных по координатам x и y iv0_ Pascal 10 22.11.2007 20:25
Рисование отрезка по координатам John Kart Студентам 5 08.05.2006 18:57
Очень срочно!!! Как по координатам курсора в пикселях получить его координаты в RichEdit? alena Delphi & Kylix 1 18.08.2002 23:47


Часовой пояс GMT +4, время: 11:58.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd. Перевод: zCarot
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог