2016-03-25 76 views
1

我注意到,通過以編程方式在Tab控件中選擇一個Tab選擇包含在所選標籤頁中的一個控件。是否有可能改變這種行爲。我在頁面中有一個控件,我不希望在從按鈕單擊中選擇其標籤頁時被選中。我有一個帶有選項卡控件和兩個標籤頁的簡單表單。當點擊button1時,標籤頁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

默認情況下,當你選擇一個標籤(甚至當你開始一種形式),這是在你的Tab鍵順序首先是自動對焦控制。我假設這是在這裏發生的事情。

你可以通過簡單地忽略相關的datagridView來解決這個問題。有多種方法可以做到這一點。首先,您可以將焦點設置爲您希望選擇的控件,而不是dataGridView。

myControl.Focus = True; 

或者相反,如果你想控制的不被選擇,你可以主動控制設置爲NULL:這可以通過完成

ActiveControl = NULL; 

注:ActiveControl是其中包含的屬性當前的主動控制。

至於這個代碼應該放在哪裏。這完全取決於你。您可以在您更改按鈕點擊事件中的選項卡後立即執行操作。這是我更喜歡的。

我相信還有其他的弊病也可以達到同樣的效果。希望這可以幫助。

+1

我想能夠使用在DataGridView在某些時候,但不是在包含它的標籤頁是selectedby按一下按鈕。我應該使用布爾開關來確定GotFocus從哪裏來? –

+1

只需將datagridview1的TabOrder屬性不要爲零。 –

+1

@PaulStanley再次看到我的回答我更新了它。 –

相關問題