# VBForums CodeBank > CodeBank - Visual Basic .NET >  Wizard Control

## Niya

The above shows a wizard created using a control I developed that can allow developers to implement wizards in their programs with very minimal coding. After referencing the assembly in your Windows Forms project, you may drag the control onto a Form and configure the wizard as you would any other control. I have attached a demo solution that shows what can be done with it. However, the control has very intuitive design time behavior which I will lay out in this post.

*Design-Time*

After spreading the control on a Form it should look like this:-


The control is very similar to a TabControl. In a TabControl you have to add tab pages to it. With the WizardControl, you have to add WizardPanels to it. You may quickly add panels to it via the control's smart tag.


The smart tag allows you to quickly add panels to the WizardControl at design time. You may also add panels through the the control's WizardPanels property:-


Using that property to manipulate the wizard's panels also gives you finer control in configuring the panels. You may add, remove, or re-order the panels from the collection editor. You may also adjust its properties as well.

The WizardControl's panels can be selected in the designer as well. You should note that both the WizardControl and its panels are separately selectable at design time. You may select the current panel by clicking on its surface at design time. From here you can change its properties via the property grid as you would any other control.

If you want to select the WizardControl itself in design mode while it has panels you must click on the navigation bar:-


You may select the WizardControl while it has an active panel by clicking anywhere within the red boxes outlined in the image above.

Notice that we avoid the "Next" and "Previous" buttons. That's because those buttons are clickable in design mode. They allow you to easily navigate between panels at design time so you can add, remove and configure controls dragged to their surface:-


Just like a TabControl, you drag and drop controls to the wizard's panels' surfaces.

*Final Notes*

Look to the next post for the attachment of the demo solution. In that solution a few things are demonstrated about using the control. The code in the solution is also commented to help explain how things are done. Suggestions, bug reports and other comments are welcomed.

Enjoy  :Smilie: . See next post for demo.

----------


## Niya

Here is the demo solution. Please note that its a VS 2010 solution.

----------


## pwm001

Hi Niya,
I like this Wizard control so I downloaded it and was trying to modify it for my needs.  The only thing I am having an issue with is how can I move the navbar to the top instead of the bottom?  Any help would be greatly appreciated.

----------


## ident

Not gone through all the code. Works in 8.1 VS2013 accept skips panel 3??? Is there a reason you invoke twice??? generally interstested.  
vb Code:
LblWaitMsg.Invoke(Sub() LblWaitMsg.Text = "Completed. You may proceed")         'The task is finished so re-enable navigation        LblWaitMsg.Invoke(Sub()                              WizardControl1.AllowNext = True                              WizardControl1.AllowPrevious = True                          End Sub)

ah edit. It's meant to. sorry regarding panel 3

----------


## Niya

> Is there a reason you invoke twice??? generally interstested.  
> vb Code:
> LblWaitMsg.Invoke(Sub() LblWaitMsg.Text = "Completed. You may proceed")
         'The task is finished so re-enable navigation
        LblWaitMsg.Invoke(Sub()
                              WizardControl1.AllowNext = True
                              WizardControl1.AllowPrevious = True
                          End Sub)
> 
> ah edit. It's meant to. sorry regarding panel 3


Oh. I did that for the specific reason of not confusing developers going through this code. Changing the text of the label has nothing to do with re-enabling navigation so I separated them but in practice, you should do it with a single Invoke call.

----------


## Niya

> Hi Niya,
> I like this Wizard control so I downloaded it and was trying to modify it for my needs.  The only thing I am having an issue with is how can I move the navbar to the top instead of the bottom?  Any help would be greatly appreciated.


Missed this post. If you're still around, let me know.

----------


## dday9

Niya, I just had a need for a wizard control and I remembered that you made one. I really like how you've incorporated the use of smart-tags and how I'm able to navigate in the designer to setup the various panels.

I have a few things that I wanted to point out though. When I added the files to my project, I needed to reference the following namespaces:
System.DesignSystem.ServiceProcess

I think that it is worth mentioning in your post.

Also, your code is not completely compatible with Option Strict on. In the WizardControlDesign.vb file, there were a few instances where ISelectionService and IComponentChangeService were not being cast.

Other than those extremely minor and nit picky things I love the control! As far as improvements, I'd like to see you add a 'help' button in the navigation bar.

----------


## Niya

> Niya, I just had a need for a wizard control and I remembered that you made one. I really like how you've incorporated the use of smart-tags and how I'm able to navigate in the designer to setup the various panels.
> 
> I have a few things that I wanted to point out though. When I added the files to my project, I needed to reference the following namespaces:
> System.DesignSystem.ServiceProcess
> 
> I think that it is worth mentioning in your post.
> 
> Also, your code is not completely compatible with Option Strict on. In the WizardControlDesign.vb file, there were a few instances where ISelectionService and IComponentChangeService were not being cast.
> 
> Other than those extremely minor and nit picky things I love the control! As far as improvements, I'd like to see you add a 'help' button in the navigation bar.


Don't know how I missed this post  :Frown: .

Anyways, I'll look into the things you mentioned when I get some spare time. Been a while since I played around with Control authoring so I'll have to re-familiarize myself with this project before making further changes.

----------


## antonfonta

Hi Niya

I'm testing your wizard in my project, it's very nice and useful.
There is a way to set buttons text? I'd like to change for istance "Next" text in "Successivo" text the value in a variable is "Italian".
Thanks for your help.

----------


## Niya

> Hi Niya
> 
> I'm testing your wizard in my project, it's very nice and useful.
> There is a way to set buttons text? I'd like to change for istance "Next" text in "Successivo" text the value in a variable is "Italian".
> Thanks for your help.


This is a good suggestion. Sorry I wasn't around when you made this post. It's been 7 years since I touched this project. Didn't realize it became a bit popular. I might have to dust off the code and update it.

----------


## dday9

> Didn't realize it became a bit popular. I might have to dust off the code and update it.


I literally used it in my last (paid) project. It's a nice little widget.

----------


## Niya

> I literally used it in my last (paid) project. It's a nice little widget.


Wow. I didn't realize. Did it give you any significant headaches?

----------


## dday9

> Wow. I didn't realize. Did it give you any significant headaches?


None at all. I used the wizard control to setup the application settings on the application's first time loading and reused it so that they can change the settings afterwards via a button click.

My settings had basically three different "categories" so I had one set of settings in their own panel and then used the last panel as a confirmation page.

Everything worked out exactly as I expected it to.

----------


## Niya

Glad you found it useful. xD

----------


## .paul.

@Niya Like it. I wrote something similar, but thats not online these days since the MSDN changes

----------

