Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > помогите разобраться с мышкой C# проге


Автор: proQuest 9.9.2006, 13:10
Как мне сделать, чтобы TabPage из TabControl открывался ( на TabControl создано несколько страниц TabPage) по щелчку не только левой кнопки мыши, но и правой, ну ни как не получается! Если кто знает помогите неопытному пожалуйста. smile 

Автор: HalkaR 9.9.2006, 14:28
Поставить обработчик на OnMouseButtonClick и выбирать нужную закладку.

Автор: proQuest 14.9.2006, 16:15
Цитата

Поставить обработчик на OnMouseButtonClick и выбирать нужную закладку.

Наверное я не совсем правильно сформулировал проблему.
Код

private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
    {
        tabControl1.SelectTab(TabName or TabIndex??);
    }
}

В том то все и дело, что я не могу узнать на какой именно закладке пользователь щелкнул правой кнопкой мыши. Когда щелкаем левой кнопкой, закладка на которой щелкнули автоматически становится текущей активной, и получить ее номер не составляет труда:
Код

tabControl1.SelectedIndex

 Но как мне получить имя или индекс закладки, о которой я знаю только то, что на нее наведен указатель мыши? smile 

Автор: HalkaR 17.9.2006, 13:33
Попробуй так.
Код

tab_name.Bounds.Contains(Point);

Если не получится, попробуй скрыть закладки
Код

this.tabControl1.ItemSize = new System.Drawing.Size(0, 1);

И заменить закладки кнопками.

Автор: proQuest 28.9.2006, 15:54
Спасибо за помощь, HalkaR, но что-то у меня пока не получается  smile 

Автор: HalkaR 28.9.2006, 16:32
proQuest, что не получается - конкретнее плиз.

Автор: stab 28.9.2006, 16:46
попробуй с методом GetChildAtPoint поиграться..

Автор: andrx 28.9.2006, 17:26
добиться требуемого эффекта можно так :
Код

public class yourTabControl : System.Windows.Forms.TabControl
{
    protected override void WndProc(ref Message m)
    {
        if ( (int)m.WParam == 2 && m.Msg == 516 )
        {
            m.WParam = (IntPtr)1;
            m.Msg = 513;
        }
        base.WndProc (ref m);            
    }
}


а в проекте сделай поправку у соответствующего контрола тип TabControl замени на yourTabControl по всему проекту.
должно все работать, на 2003 проверял 
удачи !


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)