2011-02-17 105 views
0

我正在使用C#3.5,我在项目中遇到问题,我想使文本框只接受数字。如果用户尝试输入字符,则应该显示一条消息,如“请仅输入数字”,并且在另一个文本框中必须接受有效的电子邮件ID消息。它必须显示无效的用户标识。c#3.5文本框验证

+0

C#不没有3.5版本,这是.NET Framework版本 - 你可能意思是C#3.0。 – BoltClock 2011-02-17 11:39:57

+0

这个验证是否应该在回发上运行,或者只要用户输入框的内容就运行?如果在回发中,你需要使用RegularExpressionValidator,否则你需要一些JavaScript来做到这一点。 – diceler 2011-02-17 11:41:23

回答

0

在这两种情况下,您需要在按钮的事件处理程序中定义验证例程(我假设存在某种按钮)。

还有其他方法可以实现这一点,但这是最简单的。

1

您可以使用验证控件,然后正则表达式
对于号码,您可以使用CompareValidator

<asp:CompareValidator ID="CompareValidator1" runat="server" 
ErrorMessage="CompareValidator" Operator="DataTypeCheck" Type="Integer"></asp:CompareValidator> 


和电子邮件的RegularExpressionValidator
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="RegularExpressionValidator" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>

1
function onlyNumbers(evt) 
{  
    var e = event || evt; 
// for trans-browser compatibility  
    var charCode = e.which || e.keyCode;  
    if (charCode > 31 && (charCode < 48 || charCode > 57))   
     return false;  
    return true; 
} 

使用上述功能和应用它到文本框的onkeypress事件,上面是一个javascript,并为另一个te xtbox使用必需的字段验证器,它将工作。希望这会对你有所帮助。

0

通常在这种情况下,您可以使用KeyDown事件并在按下的键不是数字时将其取消。我不会向用户显示警报,他/她会看到只有数字被接受。

0
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     this.textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress); 
    } 

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     e.Handled = !char.IsDigit(e.KeyChar); 
    } 

} 
1

对于 “只有数字” 验证您可以使用CompareValidatorOperator="DataTypeCheck"

<asp:CompareValidator runat="server" ErrorMessage="Only numbers" 
Type="Integer" ControlToValidate="YourOnlyNumbersTextBoxID" Operator="DataTypeCheck"/> 

对于 “电子邮件” 验证你可能是最好关闭用RegularExpressionValidator

<asp:RegularExpressionValidator runat="server" ErrorMessage="Invalid email" 
ControlToValidate="YourEmailTextBoxID" ValidationExpression="[regex here]"/>