在白名单密钥系统上需要帮助

时间:2019-01-07 02:32:45

标签: c#

我试图使人们需要获取一个密钥,然后他们必须将该密钥键入到TextBox中,然后单击完成按钮,如果正确,我希望它将其转换为其他形式。

问题是,如果密钥不是正确的密钥,我希望它在哪里,它会显示一个mbox并显示不正确的密钥,并保持相同的格式,但是每次我尝试做这样的事情时,我进入下一个表格,但仍然说不正确的密钥。

private void button1_Click_1(object sender, EventArgs e)
{
    if (textBox1.Text == "Aim4last") ;
    Main temp = new Main();
    temp.Region = this.Region;
    temp.Show();
    this.Hide();

    if (textBox1.Text == "") ;
    MessageBox.Show("Incorrect Key");
}

2 个答案:

答案 0 :(得分:2)

代码的问题是如何定义if语句:

if (textBox1.Text == "") ;

最后的;表示条件为true时要执行的代码已完成。我不确定是否可以编译,但是如果编译成功,则基本上没有操作。

如果语句可以用两种方式编写:

if (textBox1.Text == "")
{
    MessageBox.Show("abc");
    // you can place as much code inside the block as you like, and it will only be executed if the condition is true
}

采用这种样式,if语句将执行其下面的封闭块({ ... })。另外,您可以像这样编写if语句:

if (textBox1.Text == "")
    MessageBox.Show("abc"); // this can be on the same line as the if statement.
    MessageBox.Show("def"); // this line is not part of the if statement and will always execute regardless of the condition being met

以这种样式,if语句在满足条件时执行一行代码。请注意,def消息框不是if语句的一部分,因此它将始终被执行。

因此,我们应该这样编写您的代码:

if (textBox1.Text == "Aim4last")
{
    Main temp = new Main();
    temp.Region = this.Region;
    temp.Show();
    this.Hide();
}
else if (textBox1.Text == "")
{
    MessageBox.Show("Incorrect Key");
}

这导致了一个新问题:我们只有两个条件,"Aim4last"""。文本框可以包含其他值,但是如果密钥错误,则不会导致出现消息框。要解决此问题,请将其更改为else而不是else if

if (textBox1.Text == "Aim4last")
{
    Main temp = new Main();
    temp.Region = this.Region;
    temp.Show();
    this.Hide();
}
else
{
    MessageBox.Show("Incorrect Key");
}

答案 1 :(得分:1)

请参阅https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/if-else

您没有将逻辑放入代码块中。基本上,您的if语句什么也不做,并且代码正在继续处理每一行。

private decimal TruncateToTwoDecimals(string value)
        {

            int error_ReturnZeroIfThisIsOne = 0;
            int tempArrayLength = value.Length;
            char[] tempArray = new char[tempArrayLength];

            int startCount = 0; //starts the counter when it hits punctuation
            int newCounter = 0; //counts twice to ensure only two decimal places after the comma/period
            int nextArraySize = 1; //gets the size spec ready for the return array/next array (needs to be + 1)

            int tempArrayCurrentIndex = 0;
            foreach (Char thisChar in value)
            {
                tempArray[tempArrayCurrentIndex] = thisChar;
                tempArrayCurrentIndex++;
            }


            for (int i = 0; i < tempArrayLength; i++)
            {

                if (tempArray[i].ToString() == "," || tempArray[i].ToString() == ".")
                {
                    startCount = 1;
                }
                if (startCount == 1)
                {
                    newCounter++;
                }


                if (newCounter > 2)
                {
                    break;
                }
                nextArraySize++;
            }

            char[] returnArray = new char[nextArraySize];
            int tempErrorCheckBelow = 0;
            for (int i = 0; i < nextArraySize; i++)
            {


                try
                {
                    returnArray[i] = tempArray[i]; //left array will read [i] till the spot in right array where second decimal and ignore the rest. snip snip
                }
                catch (Exception)
                {
                    if (tempErrorCheckBelow == 2)
                    {
                        MessageBox.Show("OutOfBounds", "Error_ArrayIndex Out Of Bounds @TTTD");
                    }
                    returnArray[i] = Convert.ToChar("0");
                    tempErrorCheckBelow++;
                }

            }

            if (tempArrayLength < 1)
            {

                error_ReturnZeroIfThisIsOne++;

                string tempString = "0.0";
                try
                {
                    decimal tempDecimal = Decimal.Parse(tempString);
                    return tempDecimal;
                }
                catch (Exception)
                {

                    MessageBox.Show("Error_input String received Incorrect Format @TTTD");
                    return 0.00m;
                }
            }
            else
            {

                error_ReturnZeroIfThisIsOne++;

                string tempString = " ";
                tempString = new string(returnArray);
                try
                {
                    decimal tempDecimal = Decimal.Parse(tempString);
                    return tempDecimal;
                }
                catch (Exception)
                {
                    MessageBox.Show("Error_inputString _0_ @TTTD");
                    return 0m;

                }
            }



        }

不能处理的是既不空白也不是您想要的密钥。您可能只想做其他事情:

if (textBox1.Text == "Aim4last")
{
    Main temp = new Main();
    temp.Region = this.Region;
    temp.Show();
    this.Hide();
}
else if (textBox1.Text == "")
{
    MessageBox.Show("Incorrect Key");
}