使用文本框内的字符串调用方法

Call a method with a string inside a text box

我正在用 C# 制作一个简单的猜谜游戏,其中计算机生成一个介于 1-10 之间的数字,我同时获得了一个 clickEvent 和一个 KeyPressedEvent(按 Enter 键)来“提交”猜测。

我正在努力做到这一点,以便您只需在文本字段中键入“重置”并按回车键即可调用 StartNewGame() 方法,但它似乎没有激活该方法。

我都试过了

if (userReset.Equals("reset"))
    {
        StartNewGame();
    }

if (userReset == "reset" )
    {
        StartNewGame();
    }

但它似乎没有调用 StartNewGame()

我在 Windows 10.

上使用 Visual Studio 2019

代码的问题是变量 userReset 被设置为一个空字符串,没有别的:

String userReset = "";

因此,当您将它与文本 "reset" 进行比较时,结果是 false

相反,您或许应该这样实现它:

...
string userReset = txtGuess.Text
...

if (userReset.Equals("reset"))
...

或者,根本不使用变量:

...
if (txtGuess.Text == "reset")
...

顺便说一句,我个人会在 int.TryParseelse 中使用它:

if (int.TryParse(txtGuess.Text, out guess))
{
    ...
}
else if (txtGuess.Text == "reset")
{
    ...
}

这是因为如果文本是一个数字,那么它永远不会是 "reset"(反之亦然),这样可以避免不必要地检查 TextBox 的值。

关于案例的进一步编辑

正如@TimSchmelter 在评论中指出的那样,忽略输入文本的大小写(即使比较不区分大小写)也可能有意义,以便用户可以键入 resetResetReSeT

为此,使用不区分大小写的比较:

else if (txtGuess.Text.Equals("reset", StringComparison.OrdinalIgnoreCase))