简体   繁体   中英

How do I make one word in a text box end a program?

So one of the forms I have to create is where you enter a first and last name and then it splits the two names and puts them next to the appropriate labels, form design: https://gyazo.com/9b34dca0c1cd464fd865830390fcb743 but when the word stop is entered in any way eg Stop, StOp, sToP etc. it needs to end.

        private void btnSeparate_Click(object sender, EventArgs e)
    {
        string strfullname, strgivenname, strfamilyname, strfirstname;
        int int_space_location_one, int_space_location_two;

        strfullname = txtFullName.Text;


        int_space_location_one = strfullname.IndexOf(" ");
        strgivenname = strfullname.Substring(0, int_space_location_one);


        lblGivenEntered.Text = strgivenname;


        strfirstname = strfullname.Remove(0, int_space_location_one + 1);
        int_space_location_two = strfirstname.IndexOf(" ");


        strfamilyname = strfirstname.Substring(int_space_location_two + 1);
        lblFamilyEntered.Text = strfamilyname;
    }

This is my current code, I have tried many different ways to get the word stop to end it but it wont work so that's why there is currently no code trying to stop the program, the main problem I get is because it is searching for a space between the first and last name and it obviously doesn't have one for one word it just crashes.

Any help with this would be amazing, thanks in advance.

Just hook up the TextChanged event and go like this:

private void TextChanged(Object sender, EventArgs e)
{
    // If text, converted to lower-characters contains "stop" -> Exit
    if(txtFullName.Text.ToLower().Contains("stop"))
    {
        // What I understand as "stopping it".
        Application.Exit();
    }
}

IF with "stop it" you mean to cancle the operation:

private void btnSeparate_Click(object sender, EventArgs e)
{
    // If text, converted to lower-characters contains "stop" -> Exit
    if (txtFullName.Text.ToLower().Contains("stop"))
    {
        // What I understand as "stopping it".
        Application.Exit();
    }
    else
    {
        // Your code inside the else block
    }
}

Short version of everything: Also covering no spaces problem

private void btnSeparate_Click(object sender, EventArgs e)
{
    // Save how many words are inside
    int wordsInText = txtFullName.Text.Split(' ').Length;
    // Save if "stop" was typed into the textbox
    bool stopExisting = !txtFullName.Text.ToLower().Contains("stop");

    // If text has exactly 3 words and "stop" is NOT existing
    if (wordsInText == 3 && !stopExisting)
    {
        // Save array of splitted parts
        string[] nameParts = txtFullName.Text.Split(' ');

        // This is never used??
        string strfirstname = nameParts[1];

        // Set name-parts to labels
        lblGivenEntered.Text = nameParts[0];
        lblFamilyEntered.Text = nameParts[2];
    }
    // If text has NOT exactly 3 words and "stop" is NOT existing
    else if(wordsInText != 3 && !stopExisting)
    {
        // If there are no 3 words, handle it here - MessageBox?
    }
    // If "stop" IS existing
    else if(stopExisting)
    {
        // If text contains "stop" handle it here
        // Application.Exit(); <-- if you really want to exit
    }
}

You could just check, if one of the entered words is equal to the word "stop". There you need a StringComparions which ignores the case. Or you could parse the entered word into lower/upper-cases.

So if the check is true, you could just end the program with

Environment.Exit(0);

You could just check, if one of the entered words is equal to the word "stop". There you need a StringComparions which ignores the case. Or you could parse the entered word into lower/upper-cases.

So if the check is true, you could just end the program with

Environment.Exit(0);

Code:

if (strfullname.ToLowerInvariant().Contains("stop"))
{
    Environment.Exit(0);
}

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