c# 计算器代码怎样只允许在数字后面输入一个点,至少有1个数字包括0的情况下才能输入,还有计算器的情况~ 10
比如至少一个数字的情况下,才能输入一个加号,不能重复输入,求解!还有什么情况的麻烦大家说说!谢谢...
比如至少一个数字的情况下,才能输入一个加号,不能重复输入,求解!还有什么情况的麻烦大家说说!谢谢
展开
展开全部
我封装好的方法 现在textbox中只能输入浮点数,整数位数、小数位数、正负号可控。如下:
/// <summary>
/// 限制textbox的内容为float类型
/// </summary>
/// <param name="textBox">文本框</param>
/// <param name="intCount">整数个数</param>
/// <param name="decimalCount">小数个数</param>
/// <param name="op">是否允许正负号</param>
public static void CheckFloatOfTextBox(TextBox textBox, int intCount, int decimalCount, bool op)
{
int charCount = textBox.SelectionStart;
CheckFloatOfTextBox(textBox, intCount, decimalCount, op, textBox.SelectionStart, ref charCount);
textBox.SelectionStart = charCount;
}
private static void CheckFloatOfTextBox(TextBox textBox, int intCount, int decimalCount, bool op, int startP, ref int charCount)
{
Regex regex = new Regex(@"^[+-]{0," + (op ? "1" : "0") + @"}([0-9]{1," + intCount + @"}(\.[0-9]{0," + decimalCount + @"}|\.|)$|$)");
int startPosition = startP;
if (startPosition == 0)
return;
if (!regex.IsMatch(textBox.Text))
{
if (textBox.Text.Length > 0)
{
textBox.Text = textBox.Text.Remove(startPosition - 1, 1);
startPosition = startPosition - 1;
charCount--;
}
}
else
startPosition = startPosition - 1;
if (startPosition >= 0)
CheckFloatOfTextBox(textBox, intCount, decimalCount, op, startPosition, ref charCount);
}
/// <summary>
/// 限制textbox的内容为float类型
/// </summary>
/// <param name="textBox">文本框</param>
/// <param name="intCount">整数个数</param>
/// <param name="decimalCount">小数个数</param>
/// <param name="op">是否允许正负号</param>
public static void CheckFloatOfTextBox(TextBox textBox, int intCount, int decimalCount, bool op)
{
int charCount = textBox.SelectionStart;
CheckFloatOfTextBox(textBox, intCount, decimalCount, op, textBox.SelectionStart, ref charCount);
textBox.SelectionStart = charCount;
}
private static void CheckFloatOfTextBox(TextBox textBox, int intCount, int decimalCount, bool op, int startP, ref int charCount)
{
Regex regex = new Regex(@"^[+-]{0," + (op ? "1" : "0") + @"}([0-9]{1," + intCount + @"}(\.[0-9]{0," + decimalCount + @"}|\.|)$|$)");
int startPosition = startP;
if (startPosition == 0)
return;
if (!regex.IsMatch(textBox.Text))
{
if (textBox.Text.Length > 0)
{
textBox.Text = textBox.Text.Remove(startPosition - 1, 1);
startPosition = startPosition - 1;
charCount--;
}
}
else
startPosition = startPosition - 1;
if (startPosition >= 0)
CheckFloatOfTextBox(textBox, intCount, decimalCount, op, startPosition, ref charCount);
}
展开全部
首先先写几个子程序。这个是VB里自带的处理字符串的程序。C#里需要自己写。网上也都有
public static string left(string sSource, int iLength)//取sSource左侧iLength位
{
return sSource.Substring(0, iLength > sSource.Length ? sSource.Length : iLength);
}
public static string right(string sSource, int iLength)//取sSource右侧iLength位
{
return sSource.Substring(iLength > sSource.Length ? 0 : sSource.Length - iLength);
}
public static string Mid(string sSource, int iStart, int iLength)//取sSource中间iStart到iLength位
{
int iStartPoint = iStart > sSource.Length ? sSource.Length : iStart;
return sSource.Substring(iStartPoint, iStartPoint + iLength > sSource.Length ? sSource.Length - iStartPoint : iLength);
}
首先你先要让输入的都是数字,可以用
If(right(textbox.Text)<48||right(textbox.Text)>57)
{
textbox.Text=left(textbox.Text,Len(textbox.Text)-1);
}
这段代码意思是如果输入框最右边一位(即新输入的一位)不是数字,那么就取输入框左边的字符串长度减一位(就是整个字符串除了新输入的那位)
然后就好办了。既然里面都是数字,只要字符串长度Len(textbox.Text)>0那么就至少有一个数字,所以这时如果按下符号键,就加个符号上去
public static string left(string sSource, int iLength)//取sSource左侧iLength位
{
return sSource.Substring(0, iLength > sSource.Length ? sSource.Length : iLength);
}
public static string right(string sSource, int iLength)//取sSource右侧iLength位
{
return sSource.Substring(iLength > sSource.Length ? 0 : sSource.Length - iLength);
}
public static string Mid(string sSource, int iStart, int iLength)//取sSource中间iStart到iLength位
{
int iStartPoint = iStart > sSource.Length ? sSource.Length : iStart;
return sSource.Substring(iStartPoint, iStartPoint + iLength > sSource.Length ? sSource.Length - iStartPoint : iLength);
}
首先你先要让输入的都是数字,可以用
If(right(textbox.Text)<48||right(textbox.Text)>57)
{
textbox.Text=left(textbox.Text,Len(textbox.Text)-1);
}
这段代码意思是如果输入框最右边一位(即新输入的一位)不是数字,那么就取输入框左边的字符串长度减一位(就是整个字符串除了新输入的那位)
然后就好办了。既然里面都是数字,只要字符串长度Len(textbox.Text)>0那么就至少有一个数字,所以这时如果按下符号键,就加个符号上去
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
js正则表达式验证 \d+[.]\d+
更多追问追答
追问
没学到,怎么用if 那些的
追答
if(条件)
{执行代码}
else
{
执行代码
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询