简体   繁体   中英

Creating Wizards for Win Forms in C#

Is there any framework or tutorial on how to create a wizard in C#. I need to provide the user a way to do a sequence of selections/user inputs. I thought Wizards would be an ideal way. I need Next/Back buttons on each page. I haven't created wizards yet. Any inputs would be very helpful.

I'm working on a brief article for CodeProject on a "poor man's wizard" that uses the standard WinForms TabControl as its "foundation" : but that won't be ready for a few weeks.

But think about the advantages using the standard WinForms TabControl gives you :

  1. "less code" == "cheap" : it will handle all the "business" suggested by Manzoor Ahmed's comment above (swapping in and out a bunch of panels), with much less code.

  2. "no painting" == "less work" : it can be used without any special ownerdraw or painting code (the Simmons article on CodeProject cited by Jay Riggs above has some optional custom painting for gradients, but I have not examined that code in depth to see if it can be used without any custom drawing/painting). Note, of course, that Manzoor's suggestion would also not demand custom drawing/painting.

  3. flexibility in UI : you can show the Tabs, or hide them.

Here's two ideas on how to start using the TabControl as a "wizard" :

I : how to hide the Tabs themselves if you don't want them visible (assuming a TabControl named tabControl1 on a Form named Form1) :

a. if you want to restore visibility of the Tabs : create a Form scoped variable of type Region, and in the Form Load event put the current Region of the TabControl into that variable :

Region tabOriginalRegion;

private void Form1_Load(object sender, EventArgs e)
{
    tabOriginalRegion = tabControl1.Region;
}

b. add this to the Form Load event to hide the Tabs

// hide the tabs
tabControl1.Region = new Region(tabControl1.DisplayRectangle);

II : once the tabs are hidden : then, obviously you'll put your own buttons on each tab page to control forward and back movement. if the tabs are visible, then you'll want to handle the TabControl's 'Selecting event : inside that Event handler you can use e.TabPage to get the "destination" Tab, and you can cancel navigation to that "destination" tab by setting e.Cancel = true.

Hope this is useful.

I've used this one from CodeProject:

Wizard Form Implementation

Search CodeProject for other wizards.

我发现DevExpress XtraWizard控件可以很好地使用

Try this

C# Winforms Wizard — CodeGuru.com

Alternatively, you can use panels too. Every time you move forward or backward, just change the panels.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM