我是C#.Net中为Windows窗体应用程序创建向导的新手。所以我对创建向导没有任何想法。请给我一些关于创建多向导的想法。
问候,ravi
答案 0 :(得分:130)
有很多方法可以做到。为每个向导步骤创建表单是可能的,但非常尴尬。当用户改变步骤时,丑陋,大量闪烁。使UserControl的每个步骤都可以工作,只需将它们切换到表单的Controls集合中即可。或者为每个步骤使其中一个Visible = true。但是,UC设计往往会令人费解,您必须为每个UI项添加公共属性。
easy和RAD的方法是使用TabControl。在设计器中工作得很好,因为它允许您在设计时切换标签并在每个标签上放下控件。切换步骤很简单,只需更改SelectedIndex属性即可。唯一不重要的是在运行时隐藏选项卡。通过处理Windows消息仍然很容易。在表单中添加一个新类并粘贴下面显示的代码。编译。将新控件从工具箱顶部拖放到表单上。
using System;
using System.Windows.Forms;
class WizardPages : TabControl {
protected override void WndProc(ref Message m) {
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
}
答案 1 :(得分:29)
class WizardPages : TabControl
{
protected override void WndProc(ref Message m)
{
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
protected override void OnKeyDown(KeyEventArgs ke)
{
// Block Ctrl+Tab and Ctrl+Shift+Tab hotkeys
if (ke.Control && ke.KeyCode == Keys.Tab)
return;
base.OnKeyDown(ke);
}
}
答案 2 :(得分:1)
您需要创建自己的首选项以满足自己的偏好。一个提示将是您创建一个名为“frmWizard”的基本表单,然后所有向导窗口将继承它。您应该在基类上放置公共对象或向导对象,并在需要时修改\覆盖它们在派生类上。