2010-10-29 4 views
2

Уверен, что это получил, чтобы быть легким; Мне просто не повезло.Как я могу получить TabPage из TabControl на основе точки?

Как получить TabPage данного TabControl, вкладка которого содержит данные Point? Например, если я обрабатываю событие MouseUp, и я хочу знать, с какой вкладкой мышь закончилась, когда она была выпущена.

Я пробовал GetChildAtPoint, но кажется, что всегда возвращает первую вкладку (если я не использую ее неправильно).

+0

Вы имеете в виду, что хотите, чтобы страница загоралась, не так ли? – Homam

+0

@Homam: Правильно, я хочу знать, какая * вкладка * находится внутри (сама вкладка, в отличие от большей страницы, к которой она привязана). –

ответ

5

Попробуйте это:

TabPage GetPageByPoint(TabControl tabControl, Point point) 
{ 
    for (int i = 0; i < tabControl.TabPages.Count; i++) 
    { 
     TabPage page = tabControl.TabPages[i]; 
     if (tabControl.GetTabRect(i).Contains(point)) 
      return page; 
    } 
    return null; 
} 

Удачи!

+0

Да, это тот. –

+0

Я попробовал это, не повезло! Человек, я думаю, проблема в том, что я работаю с точкой на * экране *, а не по отношению к клиентской области элемента управления вкладками. Возможно, я могу сделать перевод действительно быстрым ... –

+0

Вы упомянули, что используете событие [MouseUp], я пробовал его, просто передаю метод [e.Location]. – Homam

2

Вы можете попробовать использовать перегрузку GetChildAtPoint с помощью GetChildAtPointSkip - this Connect bug предполагает, что он может работать.

+0

Определенно полезная перегрузка, о которой нужно знать, но я не могу понять, как ее применять здесь. Доступными флажками для перечисления 'GetChildAtPointSkip' являются' Invisible', 'Disabled' и' Transparent'; но на самом деле я фактически не хочу «пропускать» * любые * страницы. Мне просто нужна фактическая вкладка в данной точке. Я думаю, что представитель MS, который утверждал, что ошибка исправлена ​​этой перегрузкой на Connect, либо ошибалась, либо ссылается на немного другую ошибку. –

 Смежные вопросы

  • Нет связанных вопросов^_^