plantpowerjames
plantpowerjames

Reputation: 385

Creating Multiple Form GUI

I am developing a very basic application Windows Form Application in c# that inserts values into a SQL database. I have four separate forms

What is the best way link all four forms together? I'm only just getting into C# so the most basic way possible would be ideal.

The way I see it working in my head is that you run the program and end up on one screen which shows four buttons for the four corresponding forms. When you press the button a separate window opens showing the insert forms. You can then close the form to return to the Main Start Screen

What would be the basic code for this in C#? For examples sake lets say the 5 different layouts are

Upvotes: 2

Views: 8527

Answers (3)

Andrew Grinder
Andrew Grinder

Reputation: 595

Okay, here is an example of how I would do it. On the main form on button click event:

frmSecondForm secondForm = new frmSecondForm(this); //"this" is passing the main form to the second form to be able to control the main form...
secondForm.Show();
this.Hide();

One your Second Forms constructor code:

Form frmHome;
frmSecondForm(Form callingForm) //requires a calling form to control from this form
{
    Initialize(); //Already here
    frmHome = callingForm as frmMain;
}

Then on the second form's closing unhide the main form:

frmSecondForm_FormClosing()
{
    frmHome.Show();
}

So all in all, if you needed to pass data between the forms just add it as a parameter on the second form.


Again, I would consider placing your data collection into a repository package (folder) and class, then create a User.cs class that will hold all of the information you keep in the database.

Hint: Right click your top level item in solution explorer and go to New -> Folder. Name it Repo. Right click that folder and go to New -> Class and name it UserRepo. In here build functions to collect the data from the databases.

On your main form's constructor area, call the class (repo).

private Repo.UserRepo userRepo; 
frmMain_FormLoad()
{
    userRepo = new Repo.UserRepo();
}

Then on log in button click:

private button1_ClickEvent()
{
    if(userRepo.isValidLogin(userNameText, passwordText))
    {
        //Do stuff
    }
}

for userRepo.isValidLogin()

public bool isValidLogin(String username, String password)
{
    bool isValid = false;
    //Write up data code
    return isValid;
}

Upvotes: 3

iabbott
iabbott

Reputation: 881

From the Main form use eg:

TransactionEntry trans = new TransactionEntry();
trans.ShowDialog();

.ShowDialog() will show the new form, but will halt any code executing on the Main form until you close it

(This assumes your forms are all in the same solution)

Upvotes: 1

Jeroen van Langen
Jeroen van Langen

Reputation: 22038

You could try the MDI (Multiple Document Interface) way, here is a nice tutorial: http://www.dreamincode.net/forums/topic/57601-using-mdi-in-c%23/

Upvotes: 0

Related Questions