我正在创建一个具有类似安装程序的界面的程序。使用ShowDialog
类的Form
方法或执行MDI接口来实现它会更好吗?以下是我尝试使用ShowDialog
方法执行此操作的方法,以及我遇到的问题:
1)第一个表单ShowInTaskbar
属性设置为true
,其他表单设置为false
。表单以.ShowDialog()
方式显示,以响应按钮"Next>"
点击事件,单击"<Back"
按钮事件调用.Close()
方法。在这种情况下,表单以模态模式显示,这对我来说是不好的经历。
2)所有表单都将ShowInTaskbar
属性设置为true;表单由.ShowDialog()
方法显示,以响应按钮"Next>"
的点击事件(相同的事件处理程序设置.Visible=false
以隐藏表单);点击事件"<Back"
按钮调用.Close()
方法。在这种情况下,当按下Next
或Back
关闭并打开一个新窗口时,可以在任务栏中看到。
答案 0 :(得分:1)
通常,向导式接口通过一个窗口(Form
)实现,并按Next
/ Back
按钮替换其内容。
您使用的UI框架有点令人困惑,因为您使用Visual C ++标记了您的问题,建议使用MFC,ATL / WTL或Win32,但您还使用.Net标记了它以及您提到的方法和属性建议的WinForms。
如果您使用的是WinForms,最简单的方法是在表单上创建多个Panel
个实例,其中包含您在不同表单上拥有的控件组,只显示/隐藏右侧{{1}取决于按下了哪个按钮以及之前的可见Panel
。
另一种方法是使用带有隐藏标签按钮的TabControl
,然后在按下按钮时更改所选标签。
一篇博客文章,提供generic wizard control的一些示例实现。
是social.msdn.com上的一个旧帖子,它讨论了wizard dialog problem及其各种方法,以及一些更实用的链接。
如果您有组件预算并希望节省一些时间和精力,DevExpress会对商业Wizard进行控制。