design advice for newbie

R

run around

would greatly appreciate any advice on approaching this problem.

i have a browser-like winform app with 4-5 forms, allowing foward and back
navigation. the app will also allow for opening a new copy of any
particular form and navigation from that form foward independent of the
orignal form and its process (eg ie's new window function). ideally there
should be no limit to the number of new windows.

my first thought was to shell a new copy of the app with parameters telling
me where to land (which form) and allowing me to rebuild current data.
however i am not at all sure this is the best approach to a dotnet app.
any thoughts/advice would be helpful.

tia
 
R

run around

thanks, but that's not exactly what i'm trying to do. the navigation in
the orignal process is linear and i can handle it by showing and hiding
forms while navigating foward (thus maintaining state for backwards
movement, although i am not sure if i should dispose of the 'foward'
forms when going backwards or keep them around and just reshow them with
new data parms. any opinions on performance here?)

what i'm really asking for is options on spawning new windows (basically
new copies of the same app). for example, a user is looking at sales
data for a specific region and period, and wants to compare that side by
side with data from a different period. the user will then click a new
window button, which produces the same app where he/she can set the new
time period and compare it with the original data. this new window will
now allow the same foward navigation as the original window (eg. drill to
a particular salespersons data), without affecting the orignal window's
processes.

i've noticed that now matter how many new windows i open and close in ie,
there is only one ie process running in the task manager, although the
windows seem to operating independently of each other. something similar
would seem to be the optimal solution, but i really don't know how it
done.

thanks
 
G

Glen

I did something similar in a VBA project with MS Access some years back.
The concept was basically a wizard type interface that incorporated a
tab interface to allow backward navigation to any point in the wizard
process. Although the design considerations would undoubtably be
different with C#, the overall UI desing could still work. Here's the
general concept:

- Create a main form with a tabControl object (docked at top), and 3
buttons (back, next, close). Add another button to open another
instance of the form, if you like.

- Set the visible property of all but the first tab in the control to false.

- Create a method to be called by the click event of the "Next" button
to display the next tab (or simply navigate to it if not hidden) and
load any required data into the contained controls.

- Create a generic Validate() method to evaluate if any data changes on
any pages warrant hiding subsequent (visible) pages or simply changing
the data. (In my app, I notified the user that a particular change in a
previous step would invalidate the subsequent pages and prompt them to
keep or discard the changes.) This can get a bit tricky, but well
formed validation is always worth the time, in my experience.

- Create a method to open and display a new instance of the main form in
a standard class module.

- Finally, remove the Main() method (app starting point) from the main
form and move it to your standard class module. Call the method to open
and display a new instance of the main form.

BTW, I would not recommend hiding independant forms from the windows
task bar. Not providing a way for the user to navigate to windows
behind other windows is generally not the best UI design. If you truly
want a single instance in the task bar, then I would suggest (as Henk
did below) using the MDI interface.

Hope this helps, or at least gives you some ideas to consider.

- Glen
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top