2012-01-13 58 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; 
}