110,532
社区成员
发帖
与我相关
我的任务
分享
TabPage tb = tabControl1.TabPages["frmtodo"]; //新建一个tabpage
if (tb == null)//说明该需要新增的tab不存在
{
frmtodo dataMange = new frmtodo();
addTab(dataMange);
tabControl1.SelectedTab = tabControl1.TabPages["frmtodo"];
}
else
{
tabControl1.SelectedTab = tb;
}
if (e.TabPage== tabControl1.TabPages["frmtodo"])
{
//我期望的就是激活frmtodo窗体中的某一个函数,但是没有成功。
}
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
if (e.TabPage== tabControl1.TabPages["frmtodo"] && e.TabPage.Controls.Count > 0)
{
var f = (frmtodo)e.TabPage.Controls[0];
f.xxxxx();
}
}
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
if (e.TabPage == tabControl1.TabPages["Form1"])
{
//希望在这里执行frmtodo中的一个函数
foreach (Control control in this.tabControl1.TabPages["Form1"].Controls)
{
if(formList.Contains(control))
{
control.GetType().GetMethod("函数").Invoke(control, null);
}
}
}
}
private List<Form> formList = new List<Form>();
//添加tabPage的button1
private void button1_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
addTab(f1);
formList.Add(f1); //注意每添加一个窗体,要加入该list
}
win10,VS2013测试可用
private Type[] formType = { typeof(Form1), typeof(Form2), typeof(Form3) };
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
if (e.TabPage == tabControl1.TabPages["frmtodo"])
{
//希望在这里执行frmtodo中的一个函数
foreach (Control control in tabControl1.TabPages["frmtodo"].Controls)
{
if (formType.Contains(control.GetType()))
{
control.函数();
}
}
}
}
private void addTab(Form form)
{
form.MdiParent = this; //设定为mdi子窗体
form.TopLevel = false;
TabPage tb = new TabPage();
tb.Controls.Add(form); //将窗体添加到form中
tb.Text = form.Text; //设定tabpage标签
tb.Name = form.Name; //设定tabpage的name属性,为了之后的新增和销毁处理
tabControl1.TabPages.Add(tb);
form.FormBorderStyle = FormBorderStyle.None; //去除原form自带的边框
form.Dock = DockStyle.Fill; //填充整个tabpage
form.Show();
}
以上是将窗体加载到TabPage中的函数
private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
TabPage tb = tabControl1.TabPages["frmRecord"]; //新建一个tabpage
if (tb == null)//说明该需要新增的tab不存在
{
frmRecord dataMange = new frmRecord();
addTab(dataMange);
tabControl1.SelectedTab = tabControl1.TabPages["frmRecord"];
}
else
{
tabControl1.SelectedTab = tb;
}
}
加载frmRecord
private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
TabPage tb = tabControl1.TabPages["frmtodo"]; //新建一个tabpage
if (tb == null)//说明该需要新增的tab不存在
{
frmtodo dataMange = new frmtodo();
addTab(dataMange);
tabControl1.SelectedTab = tabControl1.TabPages["frmtodo"];
}
else
{
tabControl1.SelectedTab = tb;
}
}
加载frmtodo
切换到Tabpages["frmtodo"]时则执行frmtodo中的一个函数,切换到Tabpages["frmRecord"]时则执行frmRecord中的一个函数。
Type[] formType = { typeof(frmtodo), typeof(frmrecord), typeof(Form3) };
Form[] theForm = { new Form1(), new Form2(), new Form3() };
只是思路
private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
TabPage tb = tabControl1.TabPages["frmtodo"]; //新建一个tabpage
if (tb == null)//说明该需要新增的tab不存在
{
frmtodo dataMange = new frmtodo();
addTab(dataMange);
tabControl1.SelectedTab = tabControl1.TabPages["frmtodo"];
}
else
{
tabControl1.SelectedTab = tb;
}
}
以上是激活窗体。
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
if (e.TabPage== tabControl1.TabPages["frmtodo"])
{
//希望在这里执行frmtodo中的一个函数
}
}
Control.ControlCollection sonControls = tabControl1.TabPages["frmtodo"].Controls;
foreach (Control control in sonControls)
{
if (control is frmtodo)
{
frmtodo f2 = (frmtodo)control;
f2.ShowText(); //frmtodo窗体中的某一个函数
}
}