C# tabcontrol 的问题!
我想在一个窗体里面放置一个tabcontrol,然后在其中做4个tabpage和4个子窗体,每一个tabpage对应一个子窗体,我在index改变事件的函数里面将每一个子...
我想在一个窗体里面放置一个tabcontrol,然后在其中做4个tabpage和4个子窗体,每一个tabpage对应一个子窗体,我在index改变事件的函数里面将每一个子窗体打开,然后进行操作,小弟初学C#问这么低级的问题,不知道会不会让大神耻笑我!
上面第二句打错了。4个字窗体和4个tabcontrol(主窗体里面的) 展开
上面第二句打错了。4个字窗体和4个tabcontrol(主窗体里面的) 展开
2个回答
展开全部
这是一个非常好练习。弄懂了,能学到不少知识和技巧!
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class FormMain : Form
{
Form[] forms; //窗体数组用于存放四个子窗体
public FormMain()
{
InitializeComponent();
//将四个子窗体放入一个窗体数组(见说明1)
forms = new Form[4];
//初始化窗体数组
forms[0] = new Form1();
forms[1] = new Form2();
forms[2] = new Form3();
forms[3] = new Form4();
//调用一次SelectedIndexChanged事件处理程序,以加载第一个窗口
tabControl1.SelectedIndex = 0;
tabControl1_SelectedIndexChanged(null, EventArgs.Empty);
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
int index = tabControl1.SelectedIndex;
TabPage p = tabControl1.TabPages[index];
//判断所选择的TabPage中是否已经加载了窗体(见说明2)
if (p.Controls.Count == 0)
{
//要在控件中显示窗体,则窗体的TopLevel必须设置为false(见说明3)
forms[index].TopLevel = false;
//在Tab页中显示窗体
p.Controls.Add(forms[index]);
forms[index].Show();
}
}
}
}
说明:
1)之所以将四个窗体Form1...Form4放入一个窗体数组forms中,是为了使Form1与tabControl的第0页对应,Form2与tabControl的第1页对应……依次类推
2)如果tabControl的某个页中已经加载了窗体,则这个页面的Controls集合不为空,这就是说窗体加载后,页面的Controls集合就会多1项。以此来防止重复多次加载窗体
3)通常一个窗体是做作为“顶级控件”,要将窗体放入tabControl的页面中,那就必须将窗体的TopLevel属性设置为false!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询