当前位置:编程学习 > C#/ASP.NET >>

textbox输入数值后相加然后显示出来的问题

我是用类似与这样的代码操作

  double   d1   =   double.Parse(TextBox1.Text);   
  double   d2   =   double.Parse(TextBox2.Text);   
    
  double   d   =   d1   +   d2;   
    
  MessageBox.Show(d.ToString());


可是要是我其中一个textbox里没填写数值的话  就会跳出格式不正确错误   


请问要如何把没填数值的那个textbox转成double或int的"0"   这样就可以了吗 --------------------编程问答-------------------- double   d1   =   double.Parse(TextBox1.Text.Trim() == "" ? 0 : TextBox1.Text);   
double   d2   =   double.Parse(TextBox2.Text.Trim() == "" ? 0 : extBox2.Text);       
double   d   =   d1   +   d2;   
    
  MessageBox.Show(d.ToString());
--------------------编程问答--------------------
private void button9_Click(object sender, EventArgs e)
{
    double d1,d2;
    double.TryParse(textBox1.Text,out d1);
    double.TryParse(textBox2.Text,out d2);
    double d = d1 + d2;
    MessageBox.Show(d.ToString());

--------------------编程问答--------------------

        private void button1_Click(object sender, EventArgs e)
        {

            double d1;
            try
            {
                d1 = double.Parse(textBox1.Text);
            }
            catch
            {
                d1 = 0;
            }
            double d2;
            try
            {
                d2 = double.Parse(textBox2.Text);
            }
            catch
            {
                d2 = 0;
            }

            double d = d1 + d2;

            MessageBox.Show(d.ToString());
        }
--------------------编程问答--------------------

double a = 0, b = 0, c = 0;
double.TryParse(textBox1.Text, out a);
double.TryParse(textBox2.Text, out b);
c = a + b;
MessageBox.Show(c.ToString());
--------------------编程问答-------------------- 3楼正解啊,不过我看不懂。没办法 --------------------编程问答-------------------- 建议用1楼或2楼的方法 --------------------编程问答--------------------
引用 5 楼 yxhlove123 的回复:
3楼正解啊,不过我看不懂。没办法


2楼的,看出哪错了吗? 呵呵 --------------------编程问答-------------------- 3楼的是如果你输入的不能转换为double,就默认为0。 --------------------编程问答-------------------- 如果要实现如下效果..简单易懂..

double   d1=0;
double   d2=0;
if(TextBox1.Text.Trim()==""
   d1=0;
else
   d1   =   double.Parse(TextBox1.Text.Trim());  
if(TextBox2.Text.Trim()==""
   d2=0;
else
   d2   =   double.Parse(TextBox2.Text.Trim());       
   
double   d   =   d1   +   d2;   
MessageBox.Show(d.ToString());

--------------------编程问答-------------------- 好像这样不行!
书上有:
http://www.china-pub.com/195430&ref=xilie
http://www.china-pub.com/195661&ref=xilie
--------------------编程问答--------------------
引用 8 楼 whslovexyp 的回复:
3楼的是如果你输入的不能转换为double,就默认为0。


呵呵,应该这样
private void button9_Click(object sender, EventArgs e)
{
    double d1,d2;
    if (!double.TryParse(textBox1.Text, out d1)) { MessageBox.Show("text1 不是有效数据"); textBox1.Focus(); return; }
    if (!double.TryParse(textBox2.Text, out d2)) { MessageBox.Show("text2 不是有效数据"); textBox2.Focus(); return; };
    double d = d1 + d2;
    MessageBox.Show(d.ToString());
}
--------------------编程问答-------------------- 我是楼主 

大家的方法很多  但我如果是不至2个textbox  有10几20个的话   每个都要这样 if吗???? --------------------编程问答-------------------- 重写类,或调用公用方法
各个textBox的Validated事件,指定下面方法.
private void textBox_Validated(object sender, EventArgs e)
{
    double d0;
    if (((TextBox)sender).Text.Trim() != "" && !double.TryParse(((TextBox)sender).Text,out d0))
    {
        MessageBox.Show("数据格式无效");((TextBox)sender).Focus();
    }
    

//
private void button9_Click(object sender, EventArgs e)
{
    double d1,d2;
    double.TryParse(textBox1.Text,out d1);
    double.TryParse(textBox2.Text,out d2);
    double d = d1 + d2;
    MessageBox.Show(d.ToString());


--------------------编程问答-------------------- 个人认为1楼的办法最好了 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- private void button9_Click(object sender, EventArgs e)
{
    double d1,d2;
    double.TryParse(textBox1.Text,out d1);
    double.TryParse(textBox2.Text,out d2);
    double d = d1 + d2;
    MessageBox.Show(d.ToString());

--------------------编程问答-------------------- 如果不想多写的话,就在前台或后台验证输入的方法里面 if(输入非法或无输入) d=0 --------------------编程问答--------------------
引用 12 楼 chen9261 的回复:
我是楼主

大家的方法很多  但我如果是不至2个textbox  有10几20个的话  每个都要这样 if吗????


用下面这个,不管你多少个都行

        private void button1_Click(object sender, EventArgs e)
        {
            double dbResulet = 0;
            double tempDouble = 0;
            foreach (Control tb in this.Controls)
            {
                if (tb is System.Windows.Forms.TextBox)
                {
                    double.TryParse(((TextBox)tb).Text, out tempDouble);
                    dbResulet += tempDouble;
                }
            }
            MessageBox.Show(dbResulet.ToString());
        }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,