我试图在windows窗体应用程序(visual Studio)中编写代码,该应用程序应该从文本框中接收文本,并检查它是否在说一些特殊的内容,并执行文本框所述的操作,例如,如果它说"1 + 1“,则另一个文本框(在代码中称为”输出“)应该说"2”。请检查我的代码,只是说我是一个初学者。另外,我也尝试过一些类似"Convert.ToBoolean(string)“的东西,但是它没有起作用。
private void TextEditor_TextChanged(object sender, EventArgs e)
{
TextEditor.Text = "";
Convert.ToBoolean(TextEditor);
if (TextEditor.Text = "1 + 1")
{
Output.Text = "2";
}
}
发布于 2017-04-29 14:48:12
首先:我不认为您需要行(实际上,您甚至没有使用ToBoolean
的返回值)
Convert.ToBoolean(TextEditor);
其次,您将抛出一个异常,因为您无法将textBox转换为布尔值--您必须这样做:
Convert.ToBoolean(TextEditor.Text);
但我不认为这在这种情况下是有用的,所以把它置之不理。
第三,您只使用了一个相等操作符--应该这样做:
if (TextEditor.Text == "1 + 1")
//...
否则,您将文本指定为"1+1“,然后检查赋值结果(这是分配的结果,因此在这种情况下为"1 + 1")为真。显然,由于赋值是字符串,所以不可能为true,所以编译器告诉您不能将字符串("1 + 1")转换为bool。
不管怎么说,如果你想写一个计算器,我不会硬编码每一个计算的结果。另外,您还可以这样做:
Output.Text = TextEditor.Text.Split('+').Select(s => Convert.ToInt32(s.Trim())).Sum().ToString();
这将获取文本,在+符号处将其拆分(减法或其他操作),使用LINQ将(修剪后的)操作数转换为整数并对它们进行求和。
但是,由于您的数字可能是错误的(您的评论指出了类似的情况),您应该用一个try catch
包围它--而且,由于您不希望一个空输入导致错误,所以可以添加RemoveEmptyEntries
选项:
try
{
Output.Text = TextEditor.Text.Split(new []{'+'}, StringSplitOptions.RemoveEmptyEntries).Select(s => Convert.ToInt32(s.Trim())).Sum().ToString();
}
catch (Exception e)
{
Output.Text = "Wrong input!";
}
发布于 2017-04-29 14:40:49
如果需要布尔运算符,则在本例中为“==”:)
if (TextEditor.Text == "1 + 1")
发布于 2017-04-29 15:12:14
有几件事:
TextEditor.Text = "";
您不想这样做,因为您正在清除用户输入的任何内容。
Convert.ToBoolean(TextEditor);
这是不需要的,因为您没有存储或使用结果。它实际上不会将TextEditor
转换为布尔值“就位”。而且,这不应该编译,它应该是TextEditor.Text
。
if (TextEditor.Text = "1 + 1")
正如其他人所指出,这是分配(而不是比较),这是问题的原因。这就像在说
if ("1 + 1")
这不是布尔型的。
而且,正如其他人所指出的,您不想硬编码这一点,因为如果人们这样做了,例如,"1 + 2“怎么办?另外,如果他们的输入方式不同,比如"1+1“呢?
https://stackoverflow.com/questions/43701143
复制相似问题