• C# 制作向导


    1.FormBase界面:有“帮助,上一步,下一步,取消”按钮,这些按钮放置在一个Panel上。
    namespace DataBase
    {
        public partial class FormBase : Form
        {
            public FormBase()
            {
                InitializeComponent(); 
            }
            public WizardController controller = null;
     
            #region 函数
            /// <summary>
            /// 自定义函数
            /// </summary>
            public void DisableButton()
            {
                if (this.controller == null)
                    return;
                if (this.controller.IsFirstForm)
                {
                    this.buttonPrev.Enabled = false;
                }
                else
                {
                    this.buttonPrev.Enabled = true;
                }
                if (this.controller.IsLastForm) //如果是向导的最后一个页面,显示“完成”
                {
                    this.buttonNext.Text = "完成";
                }
                else    //否则显示“下一步”
                {
                    this.buttonNext.Text = "下一步";
                }
            }
            protected virtual void UpdateInfo()  //由“每一步FormStep1,FormStep2…”的界面 具体实现
            {
     
            }
            protected virtual void GoNext()
            {
                UpdateInfo();
                if (this.controller.IsLastForm) //如果是向导的最后一个页面,则调用“FinishWizard()”
                {
                    controller.FinishWizard();
                    this.Visible = false;
                }
                else//如果是向导的最后一个页面,则调用“GoNext()”
                {
                    controller.GoNext();
                }
            }
            protected virtual void GoPrev()
            {
                UpdateInfo();
                controller.GoPrev();
            }
            //protected virtual void Finish()
            //{
            //    UpdateInfo();
            //    controller.FinishWizard();
            //    this.Visible = false;
            //}
            protected virtual void Cancel()
            {
                this.controller.info = null;
                this.Close();
            }
            #endregion
     
            #region 界面控件事件
            /// <summary>
            /// 界面控件事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void buttonPrev_Click(object sender, EventArgs e)
            {
                GoPrev();
            }
            private void buttonNext_Click(object sender, EventArgs e)
            {
                GoNext();
            }
     
            //private void buttonFinish_Click(object sender, EventArgs e)
            //{
            //    Finish();
            //}
            private void buttonCancel_Click(object sender, EventArgs e)
            {
                Cancel();
            }
            #endregion   
        }
    }
     
    2.一个WizardController.cs文件(非界面)
    namespace DataBase
    {
        public class WizardController
        {
            private ArrayList WizardForms = new ArrayList();
            private int curIndex = 0;
     
            #region 构造函数
            /// <summary>
            ///构造函数
            /// </summary>
            public WizardController()
            {
                WizardForms.Add(new FormStep1()); //frmStep1继承自FormBase
                WizardForms.Add(new FormStep2());
                WizardForms.Add(new FormStep3());
                foreach (FormBase frm in WizardForms)
                {
                    frm.controller = this;
                    frm.DisableButton();
                }
            }
            #endregion
     
            #region 自定义函数
            /// <summary>
            /// 自定义函数
            /// </summary>
     
            public bool IsFirstForm //属性
            {
                get { return curIndex == 0; }
            }
            public bool IsLastForm //属性
            {
                get { return curIndex == this.WizardForms.Count - 1; }
            }
     
            public void GoNext()
            {
                if (curIndex + 1 < WizardForms.Count)
                {
                    ((FormBase)WizardForms[curIndex]).Visible = false;
                    curIndex++;
                }
                else
                {
                    return;
                }
                ((FormBase)WizardForms[curIndex]).Show();
                ((FormBase)WizardForms[curIndex]).DisableButton();
            }
     
            public void GoPrev()
            {
                if (curIndex - 1 >= 0)
                {
                    ((FormBase)WizardForms[curIndex]).Visible = false;
                    curIndex--;
                }
                else
                {
                    return;
                }
                ((FormBase)WizardForms[curIndex]).Show();
                ((FormBase)WizardForms[curIndex]).DisableButton();
            }
     
            public void BeginWizard()
            {
                ((FormBase)WizardForms[0]).Show();
                ((FormBase)WizardForms[curIndex]).DisableButton();
            }
     
            public void FinishWizard()
            {
                curIndex = 0;
                Dispose();
            }
     
            private void Dispose()
            {
                foreach (FormBase frm in WizardForms)
                {
                    frm.Close();
                }
            }
            #endregion
        }
    }
     
    3. FormStep1界面继承自FormBase,上面有一个Label控件,Text属性“This is FormStep1
    namespace DataBase
    {
        public partial class FormStep1 : DataBase.FormBase
        {
            public FormStep1()
            {
                InitializeComponent();
            }
     
            protected override void UpdateInfo()
            {
                MessageBox.Show("第一步!","Step1",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }
    }
     
    4. FormStep2界面继承自FormBase,上面有一个Label控件,Text属性“This is FormStep2
    namespace DataBase
    {
        public partial class FormStep2 : DataBase.FormBase
        {
            public FormStep2()
            {
                InitializeComponent();
            }
     
            protected override void UpdateInfo()
            {
                MessageBox.Show("第二步!", "Step2", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
     
    5. FormStep3界面继承自FormBase,上面有一个Label控件,Text属性“This is FormStep3
    namespace DataBase
    {
        public partial class FormStep3 : DataBase.FormBase
        {
            public FormStep3()
            {
                InitializeComponent();
            }
            protected override void UpdateInfo()
            {
                MessageBox.Show("第三步!", "Step3", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
    6.FormTestWizard界面,上面一个buttonText属性“启动向导”
    namespace DataBase
    {
        public partial class FormTestWizard : Form
        {
            public FormTestWizard()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                WizardController controller = new WizardController();
                controller.BeginWizard();
            }
        }
    }
     
    7.修改程序的启动界面为“FormTestWizard
    namespace DataBase
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new FormTestWizard());  //启动界面
            }
        }
    }
  • 相关阅读:
    Android中SharedPreferences使用方法介绍
    Android 判断wifi和4G网络是否开启
    network: Android 网络判断(wifi、3G与其他)
    Android NetWorkUtil
    Android开发中常用的工具类整理
    Android开发中常用的工具类整理
    Android 判断用户2G/3G/4G移动数据网络
    Android Wear开发
    Android Wear开发
    Android Wear开发
  • 原文地址:https://www.cnblogs.com/guyandianzi/p/7497301.html
Copyright © 2020-2023  润新知