WINDOWS开发,输入框TEXTBOX怎么来设置只可以输入价格实数
解决方案 »
- 请教高手帮我看下ORACLE下C#的带参数的SQL查询问题
- 在根目录的子目录下安装过discuz .net2.0 sql版的兄弟请进
- “System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常。"
- 新手!求助各位大侠,RDLC报表序号!
- C#写的c/s程序,个别客户那里使用运行为什么非常慢?
- 有winform高手吗? c# windows应用程序中datagridview 控件如何删除一个行
- 改别人做的程序时,现两个相同文件project_manager.cs和Project_Manager.cs是怎么回事
- 为什么不能登陆论坛
- 兄弟姐妹,请问水晶报表的rpt文件是怎么生成的。谢谢了。
- Help!!!!!!!!
- 请教一个进程的问题!
- .net有类似MFC中HtmlView的控件是什么?
/// <summary>
///
/// </summary>
/// <returns></returns>
private bool IsNum()
{
string str = this.textBox1.Text.Trim();
bool bl = true;
for(int i = 0 ; i < str.Length ; i++)
{
if(Char.IsNumber(str,i) == false)
{
bl = false;
break;
}
}
return bl;
}
/// <summary>
/// 只可以输入数字的文本框
/// </summary>
[ToolboxItem(false)]
public class InterTextBox : TextBox
{
#region 构造子 /// <summary>
/// 数字文本框的构造子
/// </summary>
public InterTextBox()
{
base.WordWrap = false;
this.Multiline = false;
} #endregion #region 基本方法 /// <summary>
/// 键盘按下事件
/// </summary>
/// <param name="e">键盘参数</param>
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
{
e.Handled = true;
base.Parent.Focus();
}
base.OnKeyPress(e);
}
/// <summary>
/// 处理键盘消息
/// </summary>
/// <param name="m"></param>
protected override void WndProc(ref System.Windows.Forms.Message m)
{
int WM_CHAR = 0x0102;
int WM_PASTE = 0x0302;
if (m.Msg == WM_CHAR)
{
if (((char)m.WParam >= '0') && ((char)m.WParam <= '9') || (int)m.WParam == (int)Keys.Back || (int)m.WParam == (int)Keys.Delete || (Control.ModifierKeys & Keys.Control) == Keys.Control)
{
//整数形的时候不能输入.字符
if ((int)m.WParam != 46) //"."字符
{
base.WndProc(ref m);
}
}
if ((int)m.WParam == 45)//"-"字符
{
if (this.Text.IndexOf("-", 0) == -1 && this.SelectionStart == 0)
{
base.WndProc(ref m);
}
}
}
else if (m.Msg == WM_PASTE)
{
string strResult = this.Text; //Clipboard
IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataFormats.Text))
{
strResult = strResult.Insert(this.SelectionStart, (String)iData.GetData(DataFormats.Text));
}
else
{
return;
}
try
{
System.Convert.ToDouble(strResult);
base.WndProc(ref m);
}
catch
{
}
}
else
{
base.WndProc(ref m);
}
}
#endregion
}
?
自己判断一下吧....
/// <summary>
///
/// </summary>
/// <returns></returns>
private bool IsNum()
{
string str = this.textBox1.Text.Trim();
bool bl = true;
for(int i = 0 ; i < str.Length ; i++)
{
if(Char.IsNumber(str,i) == false)
{
bl = false;
break;
}
}
return bl;
}/*=====================================================
正确的方法应该是:
====================================================*/
#region 判断是否为数值
/// <summary>
/// 判断是否为数值类型
/// </summary>
public bool IsNumeric(string strNumber)
{
bool blCheck = true;
if (strNumber.Trim().Length >= 1)
{
for (int intIndex = 0; intIndex < strNumber.Length; intIndex++)
{
if (strNumber[intIndex] < 48 || strNumber[intIndex] > 57)
{
blCheck = false;
break;
} }
}
else
{
blCheck = false;
} return (blCheck); }
#endregion
因为没输入东西肯定会跳过
for(int i = 0 ; i < str.Length ; i++)
返回true
if(!char.IsNumber(e.KeyChar))
{
if(e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46)
e.Handled =true;
else if(e.KeyChar == 46)
{
if(txtCommodityPrice.Text.IndexOf('.') != -1)
{
e.Handled =true;
}
else if(textBox1.Text.Trim() == string.Empty)
{
e.Handled =true;
textBox1.Text = "0.0";
}
}
}
strng check=textbox1.text.trim(number);
if(check= ="")
{
MessageBox.Show("為數字型");
}
Else
{
Messagebox.show("為字符串");
}
char [] cs = str.ToCharArray();
就可以得到了
if(!char.IsNumber(e.KeyChar))
{
if(e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46)
e.Handled =true;
else if(e.KeyChar == 46)
{
if(textBox1.Text.IndexOf('.') != -1)
{
e.Handled =true;
}
else if(textBox1.Text.Trim() == string.Empty)
{
e.Handled =true;
textBox1.Text = "0.0";
}
}
}谢谢
如果你输入了: 1..56 或输入 1.23.23 还会对吗?
因为输入了两次小数点!!!
if(!char.IsNumber(e.KeyChar))
{
if(e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46)
e.Handled =true;
else if(e.KeyChar == 46)
{
if(txtCommodityPrice.Text.IndexOf('.') != -1)
{
e.Handled =true;
}
else if(textBox1.Text.Trim() == string.Empty)
{
e.Handled =true;
textBox1.Text = "0.0";
}
}}