2012-01-13 38 views
0

我正在使用C#
我有02窗體,窗體O1包含03按鈕和窗體2包含TabControl有3個標籤 如何使標籤1是當我點擊時的活動標籤窗體上的第一個按鈕1和第二個選項卡將激活,當我點擊第二個按鈕和最後一個按鈕相同 任何幫助。我沒有anu的想法。有可能做到這一點通過傳遞參數?傳遞值和事件

+0

我想你應該考慮MDI窗體http://msdn.microsoft.com /en-us/library/7aw8zc76(v=vs.80).aspx – PedroC88 2012-01-13 21:55:23

回答

0

您需要獲取表單的實例,然後才能訪問該表單上的控件 - 您需要將該控件創建爲公共以便以另一種形式訪問。

編輯:暴露窗體上的控件並不總是一個好主意。因此,不要將控件設爲公開,只需在該類中創建一個屬性並從該屬性中設置選定的索引即可。例如:

public class Form2 
{ 
    public int TabSelectedIndex 
    { 
     set { tabControl.TabIndex = value; } 
    } 
} 

public class Form1 
{ 
    private Form2 _form2 = new Form2(); 

    private void Button1_Click(object sender, EventArgs e) 
    { 
     _form2.TabSelectedIndex = 1; 
    } 
} 
+0

我們如何在那裏創建控件公有屬性你的意思是? – user1148561 2012-01-13 21:51:51

+0

請檢查編輯 – MNIK 2012-01-13 21:59:56

0

向Form2添加一個方法。東西liek .. void SetActiveTabIndex(Int32 index) {TabControl1.ActiveTab = ...}

+0

該tabcontrol是另一種形式 – user1148561 2012-01-13 21:49:50

+0

編輯。將新方法放在包含選項卡控件的表單中。 – 2012-01-13 21:51:30

0

設置您的TabControl的「調節器」屬性的Form 2「公開」,然後在表格1使用下面的代碼:

Form2 frm = new Form2(); 

//you will need to call frm.Show() somewhere to display form2 

private void Button1_Click(object sender, EventArgs e) 
{ 
    Form2.tabControl1.SelectedIndex = 0; 
} 

private void Button2_Click(object sender, EventArgs e) 
{ 
    Form2.tabControl2.SelectedIndex = 1; 
} 
+0

我正在使用devExpress TabControl它劑量有這樣的特性! – user1148561 2012-01-13 21:57:24

+0

thx我建立了屬性SelectedTabPageIndex thx很多 – user1148561 2012-01-13 22:10:55

0

做一個公共變量在一個公共靜態類,當您單擊Form1中的按鈕時,只需更改此變量的值以指示某個按鈕已被單擊(例如,可以將公共變量的值設置爲0時單擊按鈕1,1時單擊按鈕2 .. 。等等)。

現在在Form2中,讀取該變量的值,並根據該值激活合適的Tab。

+0

在表單2誰是將捕獲變量的事件 – user1148561 2012-01-13 22:05:16

+0

對不起,我認爲Form1是打開的,你將點擊它中的一個按鈕,然後Form2將打開,它沒有任何意義打開兩個表格並從另一個表格改變! – 2012-01-13 22:19:12

0

在Form1上添加處理程序的每個按鈕的單擊事件:

foreach (Form f in Application.OpenForms) 
     { 
      if (f == Form2) 
      { 
       f.SelectTab(0) 
      } 
     } 

Form2上添加一個方法:

public void SelectTab(int tabIdx) 
{ 
    this.TabControl1.SelectedIndex = tabIdx; 
}