C# 从xaml中的文本框获取值 private void search(对象发送方、路由目标方) { 如果(number.Text

C# 从xaml中的文本框获取值 private void search(对象发送方、路由目标方) { 如果(number.Text,c#,xaml,textbox,C#,Xaml,Textbox,我给 InputScope=“编号” 在文本框中。所以用户不能输入单词。 给我创建了一个有名字的按钮,所以如果按下按钮搜索功能就会被调用。我需要验证用户输入的文本是否在1到454之间。如果是,它应该继续下去。另一方面,我应该像上面那样提醒他们。但它显示了这样的错误 Error 1 Operator'您正在比较Text字符串和455整数。在比较之前,将文本转换为整数并执行此操作 private void search(object sender, RoutedEventArgs e) {

我给 InputScope=“编号” 在文本框中。所以用户不能输入单词。 给我创建了一个有名字的按钮,所以如果按下按钮搜索功能就会被调用。我需要验证用户输入的文本是否在1到454之间。如果是,它应该继续下去。另一方面,我应该像上面那样提醒他们。但它显示了这样的错误


Error 1 Operator'您正在比较
Text
字符串和
455
整数。在比较之前,将文本转换为整数并执行此操作

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");
    }
} 
if(转换为32(number.Text)<455)
这是你的解决方案

if (Convert.ToInt32(number.Text) < 455)
int num=0;
if(int.TryParse(number.Text,out num)&&num>0&&num<455)
{
串位;
site=number.Text;
var rs=Application.GetResourceStream(新Uri(“def/f”+site+.html”,UriKind.Relative));
StreamReader sr=新StreamReader(rs.Stream);
NavigateToString(sr.ReadToEnd());
}
其他的
{
MessageBox.Show(“输入1到454之间的值”);
}

好吧,这条消息应该会告诉你出了什么问题
Text
是一个
字符串
,您将其用作
int

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");
}
private void search(对象发送方、路由目标方)
{
int n;
if(int.TryParse(number.Text,out n))
{
如果(n<455)
{
var rs=Application.GetResourceStream(新Uri(“def/f”+number.Text+“.html”,UriKind.Relative));
StreamReader sr=新StreamReader(rs.Stream);
NavigateToString(sr.ReadToEnd());
}
其他的
{
MessageBox.Show(“输入1到454之间的值”);
}
}
} 

您不能保证用户会键入有效的数字,因此这是一种检查方法:

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");
       }
    }
} 
int解析;
if(int.TryParse(number.Text,out-parsed)&&parsed<455)
{
//有效时执行的逻辑
}
其他的
{
MessageBox.Show(“输入1到454之间的值”);
} 

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

常见的C#问题


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

int iNumber = -1;
if(int.TryParse(textBoxNumber.Text, out iNumber))
{
 // iNumber now have value you can check
 // ...
}
else { } // failed to parse string
int num=-1
if(int.TryParse(number.Text,out num))
{
if(num>0&&num<455)
{
//在这里做什么
}
其他的
{
MessageBox.Show(“输入1到454之间的值”);
}
}

非常感谢您。它工作得很好。但我还有一个疑问。如果我什么都不给(意味着空值),它会破坏应用程序。我现在该怎么办?这不能处理用户输入“Foo”的情况@RQDQ:我已经向OP提到过了。@MohamedThaufeeq:等等。我会加上完整的答案。@NikhilAgrawal我在等兄弟
int iNumber = -1;
if(int.TryParse(textBoxNumber.Text, out iNumber))
{
 // iNumber now have value you can check
 // ...
}
else { } // failed to parse string
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");
       }
    }