我创建了一个Form窗体,在里面放了三个按钮:上一步,下一步,取消,一个panel,我想在panel里当我点击下一步的时候显示一个userControl里的内容,再点击上一步的时候再显示另一个panel里的内容,到最后一步下一步变成完成。该怎么做?
panel是一个容器控件,所以可以在Button里写如下代码:
this.panel1.Controls.Clear();
this.panel1.Controls.Add(你所想放的userControl);
我知道可以这样用,但是上一步下一步是在Form里的,和userControl不在一块,如果步骤超过三步该怎么判断?
定义一个变量 ,记录你点击的次数。
我是这样写的:
int stepBack;
int stepNext;
//bool stepBack = false;
//bool stepNext = false;
//上一步按钮
private void btnBack_Click(object sender, EventArgs e)
{
if (stepBack == 0)
{
this.panel2.Controls.Clear();
this.panel2.Controls.Add(sweepFrequencyData);
}
if (stepBack == 1)
{
this.panel2.Controls.Clear();
this.panel2.Controls.Add(fssrData);
}
}
//下一步按钮
private void btnNext_Click(object sender, EventArgs e)
{
if (stepNext == 0)
{
this.panel2.Controls.Clear();
this.panel2.Controls.Add(fssrData);
}
if (stepNext == 1)
{
this.panel2.Controls.Clear();
this.panel2.Controls.Add(addDataFile);
}
}但是感觉不对
panel不是可以隐藏吗?
直接
隐藏其他panel
显示当前panel的就行!
//上一步按钮
private void btnBack_Click(object sender, EventArgs e)
{
if (operateFlag == 2)
{
btnBack.Visible = true;
btnNext.Visible = true;
FSSRdata fssrData = new FSSRdata();
panel2.Controls.Clear();
panel2.Controls.Add(fssrData);
}
if (operateFlag == 1)
{
btnBack.Visible = false;
panel2.Controls.Clear();
panel2.Controls.Add(sweepFrequencyData);
}
switch (operateFlag)
{
case 2:
operateFlag = 1;
break;
case 1:
operateFlag = 0;
break;
}
}
//下一步按钮
private void btnNext_Click(object sender, EventArgs e)
{
if (operateFlag == 0)
{
btnBack.Visible = true;
FSSRdata fssrData = new FSSRdata();
panel2.Controls.Clear();
panel2.Controls.Add(fssrData);
}
if (operateFlag == 1)
{
//btnBack.Enabled = true;
btnOver.Visible = true;
btnNext.Visible = false;
btnBack.Visible = true;
panel2.Controls.Clear();
panel2.Controls.Add(addDataFile);
}
switch (operateFlag)
{
case 0:
operateFlag=1;
break;
case 1:
operateFlag = 2;
break;
}
图片:
,
我项目里刚好有类似的东西 ,你把panel里放3个groupBox,窗体加载的时候全部隐藏,然后根据你点击的按钮一个一个的显示,但是要注意一点就是自己要注意显示过的groupbox,当他关闭时候要把其他你不想显示的也要隐藏