2016-03-25 4 views
1

Я заметил, что программным выбором Tab в элементе управления Tab выбирается элемент управления, содержащийся на выбранной вкладке. Можно изменить это поведение. У меня есть элемент управления на вкладке, который я не хочу выбирать, когда его вкладка выбрана нажатием кнопки. У меня простая форма с элементом управления вкладкой и двумя закладками. Когда нажимается кнопка 1, выбирается страница с закладками 2, но так же отображается datagridview, содержащаяся на этой закладке.WinForms TabControl

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     dataGridView1.GotFocus += DataGridView1_GotFocus; 
    } 

    private void DataGridView1_GotFocus(object sender, EventArgs e) 
    { 
     //this event is called from button1_click 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     tabControl1.SelectedTab = tabPage2; 
    } 
} 

ответ

0

Вот код выберите закладку

private void button1_Click(object sender, EventArgs e) 
{ 
    // we can select tab by tab name 
    tabControl1.SelectTab("tabPage2"); 
    tabControl1.SelectedIndex = 1; 
    tabControl1.TabPages[0].Hide(); 
    tabControl1.TabPages[1].Show(); 
} 
1

По умолчанию при выборе вкладки (или даже при запуске формы) управления, который является первым в вашей табуляции автоматически сфокусируется. Я предполагаю, что это то, что здесь происходит.

Вы можете решить это, просто расфокусировав рассматриваемый datagridView. Существует несколько способов сделать это. Во-первых, вы можете настроить фокус на элемент управления, который вы хотите выбрать, вместо dataGridView. Это может быть сделано путем:

myControl.Focus = True; 

Или в качестве альтернативы, если вы хотите не из управления, чтобы выбрать можно установить активное управление Null:

ActiveControl = NULL; 

Примечание: ActiveControl свойство, которое содержит текущий активный контроль.

Что касается места, где должен быть размещен этот код. Это полностью зависит от вас. Вы можете сделать это, как только вы измените вкладку в событии нажатия кнопки. Это то, что я бы предпочел.

Уверен, что есть другие kludges, чтобы добиться того же. Надеюсь это поможет.

+1

Я хотел бы иметь возможность использовать DataGridView в какой-то момент, но не тогда, когда закладка, содержащая это selectedby кнопки мыши. Должен ли я использовать логический переключатель, чтобы определить, откуда появился GotFocus? –

+1

Просто измените свойство TabOrder для datagridview1 не равным нулю. –

+1

@PaulStanley См. Мой ответ снова. Я обновил его. –

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