How should I design the GUI for this?

I need to develop a C# .NET application that will have 4 windows. I attached pictures of my current design.

In the “FastEye Control” form, the user would select an application instance first. Then the listbox would be populated with the current products loaded for that application instance. Then the user would select an individual product and turn it on or off with the buttons. Hopefully, the rest of the windows are self-explanatory.

I have gathered the following requirements so far:

  • The customer will more than likely want to rearrange each of these windows individually on their desktop.
  • They will want to be able to access any of these windows quickly. I can’t just hide them behind View -> [Open Whatever] options on the menubar. All 4 of them need to be open right on startup of the application.
  • At the same time though, I do want the application to have some sort of default structure on startup where all of the windows are next to each other but can be “undocked” and placed on another monitor or whatever.
  • This application will be both a server to one application while being a client for another application. I will have multiple threads running in the background.

How should I tackle the GUI design for this project? How should I combine these 4 windows together? Any suggestions for each of the pictures I attached? Thanks!

What is the purpose of the application?

You described a little about how it’s supposed to function, but not what its overall purpose is.


The application mainly serves to be a GUI control application (let’s call it “FastEye Control”) where the user can control many aspects of our system through these forms I showed. As I mentioned in the above post, it’s both a client and a server. It’s a client application to an application called “FastEye” (the details shouldn’t matter I hope for just the GUI design). It’s a server application for an application called “ROC” (again hopefully the details shouldn’t matter). So we have:

FastEye (Server) -> FastEye Control (Client)


FastEye Control (Server) -> ROC (Client)

(There will be multiple threads running to achieve all of this.)

The purpose of the “FastEye Control” form is to allow the user to basically shut down or start up the FastEye servers easily through this GUI tool (really they are just multiple instances of the application running). So there may be more than one FastEye server that this tool is talking to through the network. There is a master on and off switch where the user will be able to shut off all activity immediately if needed. In addition, the user can select a specific instance of the application to work with instead of the master on and off switch. Each application has multiple products loaded which can be individually turned on or off. After writing this I just realized that I need a server level on and off switch. Oops. So there are 3 levels here:

Master On/Off Switch
— Individual Server (Application Instance) On/Off Switch
— Product within Server On/Off Switch

Wow I made that sound way more complicated than it should have been. Anyway, two of the other forms serve as log windows that show the network communication between the clients and servers. And the “FastEye Configuration” form is hopefully self-explanatory. It’s simply just a configuration panel where different options can be set for the application.