<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_WPF随笔</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/31447/rss</id><updated>2010-04-16T15:13:54Z</updated><author><name>Jeffery Sun</name><uri>http://www.cnblogs.com/sun9411323/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/sun9411323/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/31447/rss"/><entry><id>http://www.cnblogs.com/sun9411323/archive/2010/04/16/1713913.html</id><title type="text">WPF UI与逻辑分离的一种方法</title><summary type="text">WPF UI与逻辑分离的一种方法 WPF的UI的Style一般是用Blend来设计的，这部分通常由设计人员来完成，但由于开发人员也要写很多逻辑功能在里面，可能会给设计人员使用Blend编辑修改UI Style代理不便。每次程序的修改，设计人员都可能需要花很多时间来对程序进行编译，对于不懂程序的设计人员，是很痛苦的。 在这里提出一种解决方案，供大家参考。主要思路是把整个设计分成三个部分： 1，Con...</summary><published>2010-04-16T13:35:00Z</published><updated>2010-04-16T13:35:00Z</updated><author><name>Jeffery Sun</name><uri>http://www.cnblogs.com/sun9411323/</uri></author><link rel="alternate" href="http://www.cnblogs.com/sun9411323/archive/2010/04/16/1713913.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/sun9411323/archive/2010/04/16/1713913.html"/><content type="html">&lt;h3 align="center"&gt;WPF UI与逻辑分离的一种方法&lt;/strong&gt;&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p align="left"&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font size="2" face="华文宋体"&gt;WPF的UI的Style一般是用Blend来设计的，这部分通常由设计人员来完成，但由于开发人员也要写很多逻辑功能在里面，可能会给设计人员使用Blend编辑修改UI Style代理不便。每次程序的修改，设计人员都可能需要花很多时间来对程序进行编译，对于不懂程序的设计人员，是很痛苦的。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="华文宋体"&gt;在这里提出一种解决方案，供大家参考。主要思路是把整个设计分成三个部分：&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="华文宋体"&gt;1，Control Library用于定义UI的Style和布局。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="华文宋体"&gt;2，Logical Library用于定义程序的逻辑功能。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="华文宋体"&gt;3，Application用于显示Control Library里面设计的UI并调用Logical Library的逻辑功能&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="华文宋体"&gt;前两个部分的代码不举例了，下面写一下最后一部分的代码。&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/sun9411323/aggbug/1713913.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/sun9411323/archive/2010/04/16/1713913.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/sun9411323/archive/2010/04/12/1710484.html</id><title type="text">Wizard in C#</title><summary type="text">Wizard in C#  As we know there is no wizard class in .net framework. I just write two classes for control wizard in C#.  The code list here. 1, BaseWizardForm: The wizard each page&amp;#8217;s base form T...</summary><published>2010-04-12T11:23:00Z</published><updated>2010-04-12T11:23:00Z</updated><author><name>Jeffery Sun</name><uri>http://www.cnblogs.com/sun9411323/</uri></author><link rel="alternate" href="http://www.cnblogs.com/sun9411323/archive/2010/04/12/1710484.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/sun9411323/archive/2010/04/12/1710484.html"/><content type="html">&lt;p align="center"&gt;&lt;strong&gt;&lt;font size="5"&gt;Wizard in C#&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;strong&gt;&lt;font size="5"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;As we know there is no wizard class in .net framework. I just write two classes for control wizard in C#.  &lt;p&gt;The code list here.  &lt;p&gt;&lt;/p&gt; &lt;p&gt;1, BaseWizardForm: The wizard each page&amp;#8217;s base form&lt;/p&gt; &lt;p&gt;The form will auto generate the wizard step button, you can set the button type in the derived form class.&lt;br&gt;&lt;/p&gt; &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;pre&gt;&lt;img id="Code_Closed_Image_611036" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_611036').style.display='none'; document.getElementById('Code_Open_Image_611036').style.display='inline'; document.getElementById('Code_Open_Text_611036').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"&gt;&lt;img style="display: none" id="Code_Open_Image_611036" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_611036').style.display='none'; getElementById('Code_Closed_Image_611036').style.display='inline'; getElementById('Code_Closed_Text_611036').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"&gt;&lt;span id="Code_Closed_Text_611036" &gt;BaseWizardForm&lt;/span&gt;&lt;span style="display: none" id="Code_Open_Text_611036"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ComponentModel;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Data;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Drawing;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Linq;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Forms;&#xD;
&#xD;
&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; WindowsFormsApplication1&#xD;
{&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;enum&lt;/span&gt; WizardButtons&#xD;
    {&#xD;
        None,&#xD;
        OK,&#xD;
        Cancel,&#xD;
        OKCancel,&#xD;
        NextCancel,&#xD;
        BackNextCancel,&#xD;
        BackFinishCancel,&#xD;
    }&#xD;
&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; partial &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; BaseWizardForm : Form&#xD;
    {&#xD;
        &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
        &lt;span style="color: #808080"&gt;/// Required designer variable.&lt;/span&gt;&#xD;
        &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; System.ComponentModel.IContainer components = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&#xD;
&#xD;
        &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
        &lt;span style="color: #808080"&gt;/// Clean up any resources being used.&lt;/span&gt;&#xD;
        &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
        &lt;span style="color: #808080"&gt;/// &amp;lt;param name="disposing"&amp;gt;true if managed resources should be disposed; otherwise, false.&amp;lt;/param&amp;gt;&lt;/span&gt;&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Dispose(&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; disposing)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (disposing &amp;amp;&amp;amp; (components != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;))&#xD;
            {&#xD;
                components.Dispose();&#xD;
            }&#xD;
            &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.Dispose(disposing);&#xD;
        }&#xD;
&#xD;
        #region Windows Form Designer generated code&#xD;
&#xD;
        &lt;span style="color: #808080"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
        &lt;span style="color: #808080"&gt;/// Required method for Designer support - do not modify&lt;/span&gt;&#xD;
        &lt;span style="color: #808080"&gt;/// the contents of this method with the code editor.&lt;/span&gt;&#xD;
        &lt;span style="color: #808080"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; InitializeComponent()&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Windows.Forms.Button();&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Windows.Forms.Button();&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Windows.Forms.Button();&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.SuspendLayout();&#xD;
            &lt;span style="color: #008000"&gt;// &lt;/span&gt;&#xD;
            &lt;span style="color: #008000"&gt;// backCommonButton&lt;/span&gt;&#xD;
            &lt;span style="color: #008000"&gt;// &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.BackColor = System.Drawing.Color.Transparent;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.DialogResult = System.Windows.Forms.DialogResult.Retry;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Location = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Drawing.Point(194, 338);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Name = "&lt;span style="color: #8b0000"&gt;backCommonButton&lt;/span&gt;";&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Size = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Drawing.Size(80, 26);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.TabIndex = 3;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Back&lt;/span&gt;";&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.UseVisualStyleBackColor = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Click += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.EventHandler(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton_Click);&#xD;
            &lt;span style="color: #008000"&gt;// &lt;/span&gt;&#xD;
            &lt;span style="color: #008000"&gt;// nextCommonButton&lt;/span&gt;&#xD;
            &lt;span style="color: #008000"&gt;// &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.BackColor = System.Drawing.Color.Transparent;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.DialogResult = System.Windows.Forms.DialogResult.OK;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Location = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Drawing.Point(284, 338);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Name = "&lt;span style="color: #8b0000"&gt;nextCommonButton&lt;/span&gt;";&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Size = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Drawing.Size(80, 26);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.TabIndex = 4;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Next&lt;/span&gt;";&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.UseVisualStyleBackColor = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Click += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.EventHandler(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton_Click);&#xD;
            &lt;span style="color: #008000"&gt;// &lt;/span&gt;&#xD;
            &lt;span style="color: #008000"&gt;// cancelCommonButton&lt;/span&gt;&#xD;
            &lt;span style="color: #008000"&gt;// &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.BackColor = System.Drawing.Color.Transparent;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Location = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Drawing.Point(374, 338);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Name = "&lt;span style="color: #8b0000"&gt;cancelCommonButton&lt;/span&gt;";&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Size = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Drawing.Size(80, 26);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.TabIndex = 5;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Cancel&lt;/span&gt;";&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.UseVisualStyleBackColor = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Click += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.EventHandler(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton_Click);&#xD;
            &lt;span style="color: #008000"&gt;// &lt;/span&gt;&#xD;
            &lt;span style="color: #008000"&gt;// BaseWizardForm&lt;/span&gt;&#xD;
            &lt;span style="color: #008000"&gt;// &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AcceptButton = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.CancelButton = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ClientSize = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.Drawing.Size(514, 427);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Controls.Add(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Controls.Add(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Controls.Add(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.MaximizeBox = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.MinimizeBox = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Name = "&lt;span style="color: #8b0000"&gt;BaseWizardForm&lt;/span&gt;";&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ShowIcon = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ShowInTaskbar = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Text = "&lt;span style="color: #8b0000"&gt;BaseWizardForm&lt;/span&gt;";&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ResumeLayout(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&#xD;
&#xD;
        }&#xD;
&#xD;
        #endregion&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; Button backCommonButton;&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; Button nextCommonButton;&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; Button cancelCommonButton;&#xD;
&#xD;
&#xD;
        &lt;span style="color: #808080"&gt;////////////////////////////////////////////////////////////////////////////////////////&lt;/span&gt;&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; WizardButtons formButtons = WizardButtons.OKCancel;&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; WizardButtons WizardButton&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.formButtons; }&#xD;
            &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.formButtons = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;;&#xD;
                &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ChangeFormButtons(&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;);&#xD;
            }&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; BaseWizardForm()&#xD;
        {&#xD;
            InitializeComponent();&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnCreateControl()&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnCreateControl();&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AutoScaleMode = AutoScaleMode.None;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ChangeFormButtons(WizardButtons buttons)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.RePositionButtons();&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;switch&lt;/span&gt; (buttons)&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; WizardButtons.None:&#xD;
                    {&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Visible = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Visible = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Visible = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
                    }&#xD;
                    &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
                &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; WizardButtons.OK:&#xD;
                    {&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Text = "&lt;span style="color: #8b0000"&gt;OK&lt;/span&gt;";&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Location = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Location;&#xD;
&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Visible = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Visible = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                    }&#xD;
                    &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
                &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; WizardButtons.Cancel:&#xD;
                    {&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Cancel&lt;/span&gt;";&#xD;
&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Visible = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Visible = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                    }&#xD;
                    &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
                &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; WizardButtons.OKCancel:&#xD;
                    {&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Text = "&lt;span style="color: #8b0000"&gt;OK&lt;/span&gt;";&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Cancel&lt;/span&gt;";&#xD;
&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Visible = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                    }&#xD;
                    &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
                &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; WizardButtons.NextCancel:&#xD;
                    {&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Next&lt;/span&gt;";&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Cancel&lt;/span&gt;";&#xD;
&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Visible = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                    }&#xD;
                    &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
                &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; WizardButtons.BackNextCancel:&#xD;
                    {&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Back&lt;/span&gt;";&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Next&lt;/span&gt;";&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Cancel&lt;/span&gt;";&#xD;
&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                    }&#xD;
                    &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
                &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; WizardButtons.BackFinishCancel:&#xD;
                    {&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Back&lt;/span&gt;";&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Finish&lt;/span&gt;";&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Text = "&lt;span style="color: #8b0000"&gt;Cancel&lt;/span&gt;";&#xD;
&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
                    }&#xD;
                    &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RePositionButtons()&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Location = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Point(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ClientRectangle.Width - &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Width - 10, &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ClientRectangle.Height - &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Height - 10);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Location = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Point(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Left - &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Width - 15, &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ClientRectangle.Height - &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Height - 10);&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Location = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Point(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Left - &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Width - 15, &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ClientRectangle.Height - &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Height - 10);&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.backCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.nextCommonButton.Visible = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnSizeChanged(EventArgs e)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnSizeChanged(e);&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.cancelCommonButton == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&#xD;
                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ChangeFormButtons(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.formButtons);&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; backCommonButton_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.OnBack())&#xD;
                &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.DialogResult = DialogResult.None;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; nextCommonButton_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.WizardButton == WizardButtons.BackFinishCancel)&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.OnFinish())&#xD;
                    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.DialogResult = DialogResult.None;&#xD;
            }&#xD;
            &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.OnNext())&#xD;
                    &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.DialogResult = DialogResult.None;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; cancelCommonButton_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.OnCancel())&#xD;
                &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.DialogResult = DialogResult.None;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; OnBack()&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; OnNext()&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; OnFinish()&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; OnCancel()&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;/span&gt;&#xD;
&lt;p&gt;2, WizardController used to contol which wizard form to display &#xD;
&lt;p&gt;You can create new wizard control class from this class and control your wizard step yourself by override NextStep and PreStep.&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;pre&gt;&lt;img id="Code_Closed_Image_55047" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_55047').style.display='none'; document.getElementById('Code_Open_Image_55047').style.display='inline'; document.getElementById('Code_Open_Text_55047').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"&gt;&lt;img style="display: none" id="Code_Open_Image_55047" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_55047').style.display='none'; getElementById('Code_Closed_Image_55047').style.display='inline'; getElementById('Code_Closed_Text_55047').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"&gt;&lt;span id="Code_Closed_Text_55047" &gt;WizardControl&lt;/span&gt;&lt;span style="display: none" id="Code_Open_Text_55047"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ComponentModel;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Diagnostics;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Linq;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Forms;&#xD;
&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Reflection;&#xD;
&#xD;
&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; WindowsFormsApplication1&#xD;
{&#xD;
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WizardController : Component&#xD;
    {&#xD;
        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; List&amp;lt;BaseWizardForm&amp;gt; formList = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; List&amp;lt;BaseWizardForm&amp;gt;();&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; currentStep = 0;&#xD;
        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Timer delayShowDialogTimer;&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; IWin32Window parentWindow = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&#xD;
&#xD;
        #region Constructor and Destructor&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; WizardController()&#xD;
            : &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;()&#xD;
        {&#xD;
&#xD;
        }&#xD;
&#xD;
        #endregion&#xD;
&#xD;
        #region IDisposable Members&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Dispose(&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; disposing)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (disposing)&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (BaseWizardForm form &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; formList)&#xD;
                {&#xD;
                    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!form.IsDisposed)&#xD;
                        form.Dispose();&#xD;
                }&#xD;
            }&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.Dispose(disposing);&#xD;
        }&#xD;
&#xD;
        #endregion&#xD;
&#xD;
        #region Methods&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; AddForm(BaseWizardForm form)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.formList.Add(form);&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; AddForm(Type formType)&#xD;
        {&#xD;
            Assembly assembly = Assembly.GetCallingAssembly();&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (assembly == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&#xD;
                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&#xD;
&#xD;
            BaseWizardForm form = assembly.CreateInstance(formType.FullName) &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; BaseWizardForm;&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AddForm(form);&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RemoveForm(BaseWizardForm form)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.formList.Remove(form);&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; DialogResult ShowDialog(IWin32Window parent)&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.parentWindow = parent;&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ShowDialog();&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; DialogResult ShowDialog()&#xD;
        {&#xD;
            DialogResult ret = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.formList[&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.currentStep].ShowDialog(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.parentWindow);&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (ret == DialogResult.OK)&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.NextStep())&#xD;
                    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ShowDialog();&#xD;
            }&#xD;
            &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (ret == DialogResult.Retry)&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.PreStep())&#xD;
                    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ShowDialog();&#xD;
            }&#xD;
            &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&#xD;
            {&#xD;
                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; DialogResult.Cancel;&#xD;
            }&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ret;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; NextStep()&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.currentStep == &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.formList.Count - 1)&#xD;
                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.currentStep++;&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
        }&#xD;
&#xD;
        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; PreStep()&#xD;
        {&#xD;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.currentStep == 0)&#xD;
                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.currentStep--;&#xD;
&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&#xD;
        }&#xD;
&#xD;
        #endregion&#xD;
&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;/span&gt;&#xD;
&lt;p&gt;3 How to use. &#xD;
&lt;p&gt;A, Create new forms derived from BaseWizardForm and set the forms' WizardButton Property. &#xD;
&lt;p&gt;B, Create a new class derived from WizardController and add the forms to the controller. &#xD;
&lt;p&gt;public TestWizardController()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.AddForm(typeof(Form1));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.AddForm(typeof(Form2));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &#xD;
&lt;p&gt;C, Show the wizard &#xD;
&lt;p&gt;TestWizardController test = new TestWizardController() &#xD;
&lt;p&gt;test.ShowDialog(null);&#xD;
 &lt;img src="http://www.cnblogs.com/sun9411323/aggbug/1710484.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/sun9411323/archive/2010/04/12/1710484.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/sun9411323/archive/2009/05/16/1458473.html</id><title type="text">WinForm Splash的简单实现</title><summary type="text">WinForm Splash的简单实现 从Form派生一个新类 设置一张图片到BackgroundImage属性。 重写OnPaintBackground 画上版本号 protected override void OnPaintBackground(PaintEventArgs e) { base.OnPaintBackground(e); Version version = System.Re...</summary><published>2009-05-16T13:26:00Z</published><updated>2009-05-16T13:26:00Z</updated><author><name>Jeffery Sun</name><uri>http://www.cnblogs.com/sun9411323/</uri></author><link rel="alternate" href="http://www.cnblogs.com/sun9411323/archive/2009/05/16/1458473.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/sun9411323/archive/2009/05/16/1458473.html"/></entry><entry><id>http://www.cnblogs.com/sun9411323/archive/2007/12/16/996749.html</id><title type="text">C#自绘时钟 (附源码)</title><summary type="text">前一段写了两篇如何用C++来结合WPF进行开发的文章，今天抽时间写个指针时钟程序，代码不多，给大家做个参考，主要使用GDI+来实现，大家可以根据这些代码，加几张图片就可以画出一个漂亮的时钟，也可以领会一下GDI+中的坐标转换的方法。&#xD;</summary><published>2007-12-16T09:37:00Z</published><updated>2007-12-16T09:37:00Z</updated><author><name>Jeffery Sun</name><uri>http://www.cnblogs.com/sun9411323/</uri></author><link rel="alternate" href="http://www.cnblogs.com/sun9411323/archive/2007/12/16/996749.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/sun9411323/archive/2007/12/16/996749.html"/></entry><entry><id>http://www.cnblogs.com/sun9411323/archive/2007/12/13/994227.html</id><title type="text">用C++代码中实现WPF动画 -- Opacity Animation</title><summary type="text">很多人都习惯使用Blend来帮助编辑XAML文件，生成很多动画。但在实际开发中，用代码来实现动画还是很实用的，而且代码的逻辑开发能力更强，更容易控制，这方面C#的例子已经很多了，下面我介绍几个C++的例子。</summary><published>2007-12-13T14:30:00Z</published><updated>2007-12-13T14:30:00Z</updated><author><name>Jeffery Sun</name><uri>http://www.cnblogs.com/sun9411323/</uri></author><link rel="alternate" href="http://www.cnblogs.com/sun9411323/archive/2007/12/13/994227.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/sun9411323/archive/2007/12/13/994227.html"/></entry></feed>
