user2827904
user2827904

Reputation: 167

program doesnt stop if return is false?

here is my code:

namespace WindowsFormsApplication2
{
public partial class Form2 : Form
{
    private void Form2_Load(object sender, EventArgs e)
    {
        pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;
    }

    public Form2()
    {
        InitializeComponent();
    }
    public bool radioButtons()
    {
        if (!userRadioButton.Checked && !adminRadioButton.Checked)
        {
            MessageBox.Show("You must select an account type");
            return false;
        }
        else
        {
            return true;
        }
    }

    public void button1_Click(object sender, EventArgs e)
    {
        bool a = radioButtons();
        if (a == true)
        {
            string userName = userNameBox.Text;
            string password = passwordBox.Text;
            var userNames = File.ReadAllLines(@"C:\Other\myFile.txt");
            checkUsernameValid();
            checkUsernameNotExist();
            checkPasswordsValid();
            checkPasswordsMatch();
            allOK();
        }   
    } 
    public void mySW()
    {
         string path = @"C:\Other\myFile.txt";
        string userName = userNameBox.Text;
        string password = passwordBox.Text;
        using (StreamWriter writer = new StreamWriter(path, true))
        {
            writer.WriteLine("Username and Password: {0} {1}",userName,password);
            writer.WriteLine();
            writer.Close();
            writer.Dispose();
        }
        MessageBox.Show("Thanks for registering! \n\nYou may now log in!","Registration SuccessFul");
        Application.OpenForms[0].Show();
        this.Close();
    }
    public bool checkUsernameNotExist()
    {
        if (userNameBox.Text == "")
        {
            MessageBox.Show("Username cannot be empty", "Invalid Username Entry");
            return false;
        }
        else
            return true;
    }
    public bool checkPasswordsMatch()
    {
        if (!passwordBox.Text.Equals(repeatPasswordBox.Text))
        {
            MessageBox.Show("Sorry, your passwords do not match, try again", "Password Error");
            passwordBox.Text = "";
            repeatPasswordBox.Text = "";
            return false;
        }
        else
            return true;
    }
    public void checkUsernameValid()
    {
        if (userNameBox.Text.Contains("Username: " + userNameBox.Text))
        {
            MessageBox.Show("Sorry, that user name is not available, try again", "Invalid Username Entry");
            userNameBox.Text = "";
            passwordBox.Text = "";
            repeatPasswordBox.Text = "";
            return false;
        }
        else
            return true;
    }
    public void allOK()
    {
        if (!userNameBox.Text.Contains("Username: " + userNameBox.Text) && passwordBox.Text == repeatPasswordBox.Text)
            {
                mySW();
            }
    }
    public void checkPasswordsValid()
    {
        if (passwordBox.Text == "")
            {
                MessageBox.Show("Password fields cannot be empty","Password Error");
            }
    }
   }
}

now the problem is if, for example, the username is not valid, and a message box shows up, it then shows a password box, then a thanks for registering box. how do i get the program to stop if one of the results shows a box and returns false???

Upvotes: 0

Views: 1080

Answers (1)

No Idea For Name
No Idea For Name

Reputation: 11577

o boy...

all the methods:

checkUsernameValid
checkUsernameNotExist
checkPasswordsValid
checkPasswordsMatch

should return a boolean.

public bool checkPasswordsValid()
{
    if (passwordBox.Text == "")
    {

        MessageBox.Show("Password fields cannot be empty","Password Error");
        return false;
    }

    return true;
}

public bool checkUsernameValid()
{
    if (userNameBox.Text.Contains("Username: " + userNameBox.Text))
    {
        MessageBox.Show(
            "Sorry, that user name is not available, try again",
            "Invalid Username Entry");

        userNameBox.Text = "";
        passwordBox.Text = "";
        repeatPasswordBox.Text = "";
        return false;
    }

    return true;
}

after that, in the button1_Click method, you shouldn't continue if the last one did not passed:

if(checkUsernameValid() && checkUsernameNotExist() && 
    checkPasswordsValid() && checkPasswordsMatch())
{
   allOK();
}

in here you can put an else statement, and then do what you need to stop the program. if you physically need to end the program, Close() should do just fine

Upvotes: 3

Related Questions