我试图使人们需要获取一个密钥,然后他们必须将该密钥键入到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");
}
答案 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");
}