我建议您更新一些“当前状态”变量,以便始终拥有指向所选选项卡页及其子控件的指针(在此处讨论的选项卡式记事本模拟的情况下:文本框)。我的偏好是使用 Dictionary 跟踪 TabPage<>TextBox 连接,以避免在使用 TabPage.Controls 路由访问它们时强制转换 TextBox:以下代码假设您在 Form 上有一个名为 '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。
最好的,比尔