描述:下面这个方法是主窗体中的公共方法,主用是用于MainForm中的TabControl中动态添加TabPage,
然后又在TabPage中又嵌套一个传进来的Form。
public void AddTabPageForm(Form f)
{ Form form = f;
TabPage tab = (TabPage)formList["tab" + form.Name];
if (tab == null)
{
tab = new TabPage();
formList.Add("tab" + form.Name, tab);
form.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_Closing);
form.FormBorderStyle = FormBorderStyle.None;
form.Dock = DockStyle.Fill;
form.TopLevel = false;
form.Visible = true;
form.Parent = tab;
tab.Name = "tab" + form.Name;
tab.Text = " " + form.Text + " ";
this.MainTabControl.TabPages.Add(tab);
this.MainTabControl.SelectedTab = tab;
}
}.....
项目中,现在有一个叫LaborAdd的窗体,窗体中有一个TabControl,名叫LaborTabControl,并且包含了两个TabPage,一个是TabPage1和TabPage2。
通过调用AddTabPageForm(Form f)方法,显示LaborAdd窗体,现在问题出现了。
问题:TabPage1的所有控件,例如Label、TextBox等都能显示出来,但是切换到TabPage2的时候,原来已经添加的Label和TextBox等所有控件一个都没有显示出来。
然后我在LaborAdd中测试了一下,
foreach (Control con in tabPage2.Controls)
{
con.Visible = true;
Console.WriteLine(con.Visible);
}
发现tabPage2下面的控件的Visible都是false的,就算在前面加了con.Visible=true,到最后输出都还是false.
请问高手们,这个问题怎样解决???
然后又在TabPage中又嵌套一个传进来的Form。
public void AddTabPageForm(Form f)
{ Form form = f;
TabPage tab = (TabPage)formList["tab" + form.Name];
if (tab == null)
{
tab = new TabPage();
formList.Add("tab" + form.Name, tab);
form.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_Closing);
form.FormBorderStyle = FormBorderStyle.None;
form.Dock = DockStyle.Fill;
form.TopLevel = false;
form.Visible = true;
form.Parent = tab;
tab.Name = "tab" + form.Name;
tab.Text = " " + form.Text + " ";
this.MainTabControl.TabPages.Add(tab);
this.MainTabControl.SelectedTab = tab;
}
}.....
项目中,现在有一个叫LaborAdd的窗体,窗体中有一个TabControl,名叫LaborTabControl,并且包含了两个TabPage,一个是TabPage1和TabPage2。
通过调用AddTabPageForm(Form f)方法,显示LaborAdd窗体,现在问题出现了。
问题:TabPage1的所有控件,例如Label、TextBox等都能显示出来,但是切换到TabPage2的时候,原来已经添加的Label和TextBox等所有控件一个都没有显示出来。
然后我在LaborAdd中测试了一下,
foreach (Control con in tabPage2.Controls)
{
con.Visible = true;
Console.WriteLine(con.Visible);
}
发现tabPage2下面的控件的Visible都是false的,就算在前面加了con.Visible=true,到最后输出都还是false.
请问高手们,这个问题怎样解决???
解决方案 »
- Windowsform程序中选取框高度限制的问题
- 在线等,急,大侠帮忙啊:自动生成panel控件,在panel上自动生成TextBox控件
- 关于线程的问题
- 新手提问~
- 是否有工具能将MSDE2000和.net framework2.0一起打包的工具。。
- 关于继承的问题
- sqlserver2005 中的连接问题!!!急,请帮忙
- 请问~我覆盖一个正在运行的网站的.DLL时,老是出现“该程序被另一个程序所使用”而导致无法覆盖
- 有偿求代码
- 请问如何将XML节点的内容挂到DataGrid上啊!!!--WinForm,请指点!
- 局域网内机器之间如何共享数据
- 用代码实现web共享时出现RPC服务器不可用的问题
还有一点 检查检查你TabControl切换的逻辑写得是否完全准确
然后就是tabcontrol 的机制, 试试先把tabpage加到tabcontrol, 再往tabpage里加form
private Form form = null;
/// <summary>
/// 添加TabPages
/// </summary>
/// <param name="obj">窗体</param>
public void AddTabPageForm(Form f)
{
try
{
this.form = f;
TabPage tab = (TabPage)formList["tab" + form.Name];
if (tab == null)
{
tab = new TabPage();
formList.Add("tab" + form.Name, tab);
form.MdiParent = this;//1.关键
form.FormBorderStyle = FormBorderStyle.None;
form.Dock = DockStyle.Fill;
form.TopLevel = false;
form.Visible = true;
form.Parent = tab;//2.关键
tab.Name = "tab" + form.Name;
tab.Text = " " + form.Text + " ";
tab.Parent = this.MainTabControl;
this.MainTabControl.SelectedTab = tab; }
}
catch (Exception ex)
{
MessageBox.Show("系统发生异常,请与管理员联系!原因:" + ex.Message);
}
}结贴