检测TabConrol中的哪个Tabpage是从另一个表单C#中选择的

时间:2017-02-06 13:11:17

标签: c# winforms

如何从Form2 Form1中选择哪个标签来检测Form1.tabcontrol.SelectedIndex

我尝试使用Form1.tabcontrol.SelectedTabForm1 form1 = new Form1(); if (!string.IsNullOrEmpty(textbox.Text)) { if (form1.tabcontrol.SelectedTab == form1.secondTab) { // do stuff } else if (form1.tabcontrol.SelectedTab == form1.thirdTab) { // do stuff } } ,但它只是一直向我显示第一个标签被选中。

这是我的代码:

container

2 个答案:

答案 0 :(得分:1)

你的问题是你有一个干净的Form1。这不是您看到选项卡控件的实例。您需要将Form1的实例传递给Form2。然后,您将看到您选择的真实选定选项卡。

为Form2中的构造函数和类型为Form1的变量:

进行重载
private Form1 myForm1;

public Form2(Form1 f1)
{
    // initialize the form1
    myForm1 = f1;
}

现在,当您在Form2中检查所选标签时,它将显示实际选定的索引。但只有在调用form2.Show()之前选择的那个

if (!string.IsNullOrEmpty(textbox.Text))
{
   if (form1.tabcontrol.SelectedTab == form1.secondTab)
   {
        // do stuff

   }
   else if (form1.tabcontrol.SelectedTab == form1.thirdTab)
   {
       // do stuff
   }
}

修改

另一种可能是使用static变量在SelectedIndexChanged Form1 public static int Tab_Index = 0; public static TabPage Tab_Page; private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { Tab_Page = tabControl1.SelectedTab; Tab_Index = tabControl1.SelectedIndex; } 事件中的选择发生变化时保存索引或页面:

Form1.Tab_Index
Form1.Tab_Page

别忘了挂钩活动!只需在设计器中的选项卡控件的属性窗口中双击它即可。

在表单2中,您可以像这样使用它:

Occupation

这样您将始终拥有当前值

答案 1 :(得分:1)

在实例化时将Form1作为所有者传递给Form2。

在Form1中:

Form2 form2 = new Form2 {Owner = this};
private void showForm2()
{
    form2.Show();
}

在Form2中:

if ( ((Form1)Owner).tabcontrol.SelectedIndex == 1 )