我建议你及时更新一些“当前状态”变量,所以你总是有一个指针到所选标签页,它的子控件(在这里讨论一个标签,记事本仿真的情况下:一个TextBox)。我更倾向于将保留的TabPage <的轨道>使用字典,以避免投的文本框,如果他们使用的是TabPage.Controls路径访问文本框的连接:下面的代码假定你有一个名为“tabControl1在窗体上的TabControl:
Dictionary<TabPage, TextBox> dct_TabPageToTextBox;
int tabCnt = 1;
TabPage currentTabPage;
TextBox currentTextBox;
因此,当你在运行时创建的每个新的TabPage调用是这样的:
private void AddNewTabPage()
{
if (dct_TabPageToTextBox == null) dct_TabPageToTextBox = new Dictionary<TabPage, TextBox>();
currentTabPage = new TabPage("Page " + tabCnt.ToString());
tabControl1.TabPages.Add(currentTabPage);
currentTextBox = new TextBox();
dct_TabPageToTextBox.Add(currentTabPage, currentTextBox);
currentTabPage.Controls.Add(currentTextBox);
currentTextBox.Dock = DockStyle.Fill;
currentTextBox.Text = "sample text for page " + tabCnt.ToString();
tabControl1.SelectedTab = currentTabPage;
tabCnt++;
}
由于最终用户更改所选的TabPage你可以简单地更新当前的状态变量,如这个:
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
currentTabPage = tabControl1.SelectedTab;
currentTextBox = dct_TabPageToTextBox[currentTabPage];
MessageBox.Show("text in current Tab Page is : " + currentTextBox.Text);
}
所以,现在有一个由只适用于currentTextBox你的菜单选项调用的代码。
最好,比尔
我只使用你的代码的第15行,tabControl.SelectedTab.Controls [0](获得正确的控制)是我所需要的。完美(现在)。谢谢(对你和其他人)。 – Zach 2009-11-17 22:09:44