0
private void search(object sender, RoutedEventArgs e)
{
    if (number.Text < 455)
    {
        string site;
        site = number.Text;
        var rs = Application.GetResourceStream(new Uri("def/f" + site + ".html", UriKind.Relative));
        StreamReader sr = new StreamReader(rs.Stream);
        browser.NavigateToString(sr.ReadToEnd());
    }
    else
    {
        MessageBox.Show("Enter Value between 1 to 454");
    }
} 

我在 TextBox 中给出了 InputScope="Number"。所以用户不能输入单词。给我创建了带有名称的按钮,因此如果按下按钮,将调用搜索功能。我需要验证用户输入的文本是否介于 1 到 454 之间。如果是,它应该继续。否则,我应该像上面那样提醒他们。但它显示错误,例如,

Error 1 Operator '<' cannot be applied to operands of type 'string' and 'int'

4

6 回答 6

1

您正在比较Text哪个是字符串和整数是455。在比较之前将文本转换为整数并执行此操作。

if (Convert.ToInt32(number.Text) < 455)

这是您的解决方案

int num = 0;

if (int.TryParse(number.Text, out num) && num > 0 && num < 455)
{
    string site;
    site = number.Text;
    var rs = Application.GetResourceStream(new Uri("def/f" + site + ".html", UriKind.Relative));
    StreamReader sr = new StreamReader(rs.Stream);
    browser.NavigateToString(sr.ReadToEnd());
}
else
{
    MessageBox.Show("Enter Value between 1 to 454");
}
于 2013-07-26T13:48:26.367 回答
1

好吧,该消息应该告诉您出了什么问题。Text是 astring并且您将其用作int.

private void search(object sender, RoutedEventArgs e)
{
    int n;
    if(int.TryParse(number.Text, out n))
    {
       if (n < 455)
       {
           var rs = Application.GetResourceStream(new Uri("def/f" + number.Text + ".html", UriKind.Relative));
           StreamReader sr = new StreamReader(rs.Stream);
           browser.NavigateToString(sr.ReadToEnd());
       }
       else
       {
           MessageBox.Show("Enter Value between 1 to 454");
       }
    }
} 
于 2013-07-26T13:50:33.017 回答
0

大概应该是这样的:我们应该检查 (num > 0 && num < 455)。我们也应该检查 -ve 值。

int num = -1

if(int.TryParse(number.Text, out num))
    {
       if (num > 0 && num < 455)
       {
         //Do here 
       }
       else
       {
           MessageBox.Show("Enter Value between 1 to 454");
       }
    }
于 2013-07-26T14:10:05.417 回答
0

你不能保证用户会输入一个有效的数字,所以这是一种检查方法:

int parsed;

if (int.TryParse(number.Text, out parsed) && parsed < 455)
{
    // Logic to execute when valid
}
else
{
    MessageBox.Show("Enter Value between 1 to 454");
} 
于 2013-07-26T13:50:33.707 回答
0

您应该使用Convert.ToInt32()int.TryParse()将您的字符串转换为整数以便进行比较。您不能以您的方式直接比较字符串和整数。

于 2013-07-26T13:51:05.197 回答
0

常见的 C# 问题

int iNumber = -1;
if(int.TryParse(textBoxNumber.Text, out iNumber))
{
 // iNumber now have value you can check
 // ...
}
else { } // failed to parse string
于 2013-07-26T13:51:53.577 回答