如何从Form2
Form1
中选择哪个标签来检测Form1.tabcontrol.SelectedIndex
?
我尝试使用Form1.tabcontrol.SelectedTab
和Form1 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
答案 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 )