C# WinForm 如何实现上一页下一页的效果

ovenj 2009-11-06 02:29:32
大家有没有遇到这样的问题,做类似安装程序一样的“上一步,下一步”,怎么实现的?


还有一个问题
有一个MidParents窗体,里面有Form1,Form2,Form3

我想在Form1里弹出Form2,Form2里弹出Form3,怎么制定Form2,和Form3的MidParents???

Form1的父窗体是主窗体

Form2 f=new Form2();
f.MdiParents=this.Parents ; 错误
f.parents=this.parents ;错误


怎么做呀?
...全文
1279 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ovenj 2009-11-06
  • 打赏
  • 举报
回复
DesignTimeWizard这个有人用过没有?用过的给我发个例子把,源码看不懂
mliomo 2009-11-06
  • 打赏
  • 举报
回复
菜鸟飘过,顺便顶一下
forrestsun 2009-11-06
  • 打赏
  • 举报
回复
参考一下这个吧:
http://www.codeproject.com/KB/miscctrl/DesignTimeWizard.aspx
tianliang1 2009-11-06
  • 打赏
  • 举报
回复
form1下一步按钮代码
form2 fm=new form2();
fm.Owner=this;
fm.show();
this.Hide();
Form2的上一步按钮代码
fm.Owner.show();
this.close();
依次类推,如果很多窗口会成为父窗体,最好用this.Hide()
wuyq11 2009-11-06
  • 打赏
  • 举报
回复
用一个panel表示一个步骤,用一个变量记住第几步,根据步数来显示不同的panel!
或tabcontrol
参考
wzuomin 2009-11-06
  • 打赏
  • 举报
回复
帮顶
ovenj 2009-11-06
  • 打赏
  • 举报
回复
怎么没人顶啊???

下午初步实现了一个pannel的切换。


ArrayList list = new ArrayList();
int i = -1;
//下一页
private void button1_Click(object sender, EventArgs e)
{
i++;
if (i > list.Count - 1)
i = list.Count - 1;
((Panel)list[i]).Visible = true;
for (int j = 0; j < list.Count; j++)
{
if (j != i)
((Panel)list[j]).Visible = false;
}



}
//加载窗体
private void Form3_Load(object sender, EventArgs e)
{
string str = "";
foreach (Control con in this.Controls)
{
str += con.GetType().Name.ToString()+" "+con.Name.ToString()+" ";
if (con.GetType().Name.ToString() == "Panel")
{
list.Add(con);
}
}
MessageBox.Show(list.Count.ToString()+" "+str);
}
//上一页
private void button2_Click(object sender, EventArgs e)
{
i--;
if (i < 0)
i = 0;
((Panel)list[i]).Visible = true;
for (int j = 0; j < list.Count;j++ )
{
if(j!=i)
((Panel)list[j]).Visible = false;
}


}


能实现效果了,但是往窗体上拖pannel的时候不好控制pannel的所属pannel,如果一样大的pannle,很可能第二个pannel会属于第一个pannel里的。

大家还有什么好方法,实现上一步下一步的?而且能够获得每一步的一些值
qlzf11140820 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ovenj 的回复:]
多个窗体放在一块,切换的时候位置会变化,如何实现位置的不变化,这是一个问题,另一个问题是如何使切换的时候窗体的值仍然保存着。

panel是可以的,http://www.codeproject.com/KB/miscctrl/DesignTimeWizard.aspx#xx2724391xx
上面的插件就是panel做的,但感觉不怎么好用,所以自己想写个
[/Quote]可以用visible 可见属性嘛
快乐乔巴 2009-11-06
  • 打赏
  • 举报
回复
FormChild cFormChild1 = new FormChild();
FormChild cFormChild2 = new FormChild();
FormChild cFormChild3 = new FormChild();
cFormChild1.MdiParent = this;
cFormChild2.MdiParent = this;
cFormChild3.MdiParent = this;
cFormChild1.Show();
cFormChild2.Show();
cFormChild3.Show();
ovenj 2009-11-06
  • 打赏
  • 举报
回复
多个窗体放在一块,切换的时候位置会变化,如何实现位置的不变化,这是一个问题,另一个问题是如何使切换的时候窗体的值仍然保存着。

panel是可以的,http://www.codeproject.com/KB/miscctrl/DesignTimeWizard.aspx#xx2724391xx
上面的插件就是panel做的,但感觉不怎么好用,所以自己想写个
liherun 2009-11-06
  • 打赏
  • 举报
回复
用PANEL行嘛?
yuzhlhua 2009-11-06
  • 打赏
  • 举报
回复
多个页放到一起,只显示一个。
翻页的时候换。
qlzf11140820 2009-11-06
  • 打赏
  • 举报
回复
this.IsMdiContainer = true;
Form2 f=new Form2();
f.MdiParent = this;
f.Show();

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧