مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

aramhamid20

عضویت از 1394/06/15

ایجاد پیغام خطا

  • یکشنبه 22 فروردین 1395
  • 01:05
تشکر میکنم

سلام به دوستای خوبم :)

یه سوال داشتم؟ من این فرم رو برای ماشین حساب طراحی کردم. میخواستم اگر کاربر در یکی از این texbox  بجز شماره چیزی دیگه ای وارد کرد بهم بگه که اشتباه وارد کردی 

 از ( try catch ) استفاده کنم  خوبه ؟

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 22 فروردین 1395
  • 06:26

میخواهید فقط عدد وارد کنه ؟

میتونید ار رویداد KeyPress استفاده کنید

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

    // only allow one decimal point
    if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
    {
        e.Handled = true;
    }
}

 

کاربر سایت

aramhamid20

عضویت از 1394/06/15

  • یکشنبه 22 فروردین 1395
  • 07:45
 

بله فقط عدد وارد کنه.

ولی اگر یکی از texbox ها هم خالی بود اون  texbox رو بصورت پیش فرض سفر بزار و بعد عملیات حساب رو انجام بده.

من برای خالی بودن texbox  این کار رو کردم هر چند خیلی طولانی شده !!!


 private void butt_Calculator_Click(object sender, EventArgs e)
        {
            if (txt_A.Text=="")
            {
                if (txt_B.Text=="")
                {
                    if (txt_C.Text=="")
                    {
                        label_Area.Text = "(2 * 0 * 0)+(2 * 0 * 0)+(2 * 0 * 0) =0".ToString();
                        label_Volume.Text = " 0 * 0 * 0 =0".ToString();
                    }
                    else
                    {
                        //Area:(2*a*b)+(2*a*c)+(2*b*c)
                        double x = Convert.ToDouble(txt_C.Text);
                        double area = (2 * 0 * 0) + (2 * 0 * x) + (2 * 0 * x);
                        double volume = 0 * 0 * x;
                        label_Area.Text = "(2 * 0 * 0)+(2 * 0 * " + x + ")+(2 * 0 * " + x + ") =" + area.ToString();
                        label_Volume.Text = " 0 * 0 * " + x + " =" + volume.ToString();
                    }
                }
                else
                {
                    if (txt_C.Text=="")
                    {
                        double x = Convert.ToDouble(txt_B.Text);
                        double area = (2 * 0 * x) + (2 * 0 * 0) + (2 * x * 0);
                        double volume = 0 * x * 0;
                        label_Area.Text = "(2 * 0 * " + x + ")+(2 * 0 * 0)+(2 * " + x + " * 0) ="+area.ToString();
                        label_Volume.Text = " 0 * " + x + " * 0 ="+volume.ToString();
                    }
                    else
                    {
                        double x = Convert.ToDouble(txt_B.Text);
                        double y = Convert.ToDouble(txt_C.Text);
                        double area = (2 * 0 * x) + (2 * 0 * y) + (2 * x * y);
                        double volume = 0 * x * 0;
                        label_Area.Text = "(2 * 0 * " + x + ")+(2 * 0 * " + y + ")+(2 * " + x + " * " + y + ") =" + area.ToString();
                        label_Volume.Text = " 0 * " + x + " * " + y + " =" + volume.ToString();
                    }
                }
            }
            else
            {
                if (txt_B.Text=="")
                {
                    if (txt_C.Text=="")
                    {
                        double x = Convert.ToDouble(txt_A.Text);
                        double area = (2 * x * 0) + (2 * x * 0) + (2 * 0 * 0);
                        double volume = x * 0 * 0;
                        label_Area.Text = "(2 * " + x + " * 0)+(2 * " + x + " * 0)+(2 * 0 * 0) =" + area.ToString();
                        label_Volume.Text =  + x + " * 0 * 0 =" + volume.ToString();
                    }
                    else
                    {
                        double x = Convert.ToDouble(txt_A.Text);
                        double y = Convert.ToDouble(txt_C.Text);
                        double area = (2 * x * 0) + (2 * x * y) + (2 * 0 * y);
                        double volume = x * 0 * y;
                        label_Area.Text = "(2 * " + x + " * 0)+(2 * " + x + " * " + y + ")+(2 * 0 * " + y + ") =" + area.ToString();
                        label_Volume.Text =  + x + " * 0 * " + y + " =" + volume.ToString();
                    }
                }
                else
                {
                    if (txt_C.Text=="")
                    {
                        double x = Convert.ToDouble(txt_A.Text);
                        double z = Convert.ToDouble(txt_B.Text);
                        double areaa = (2 * x * z) + (2 * x * 0) + (2 * z * 0);
                        double volumee = x * z * 0;
                        label_Area.Text = "(2 * " + x + " * " + z + ")+(2 * " + x + " * 0)+(2 * " + z + " * 0) =" + areaa.ToString();
                        label_Volume.Text = +x + " * " + z + " * 0 =" + volumee.ToString();
                    }
                    else
                    {
                        double xx = Convert.ToDouble(txt_A.Text);
                        double yy = Convert.ToDouble(txt_C.Text);
                        double zz = Convert.ToDouble(txt_B.Text);
                        double area = (2 * xx * zz) + (2 * xx * yy) + (2 * zz * yy);
                        double volume = xx * zz * yy;
                        label_Area.Text = "(2 * " + xx + " * " + zz + ")+(2 * " + xx + " * " + yy + ")+(2 * " + zz + " * " + yy + ") =" + area.ToString();
                        label_Volume.Text = +xx + " * " + zz + " * " + yy + " =" + volume.ToString();
                    }
                }
            }
        }
کاربر سایت

morteza.cs

عضویت از 1393/08/12

  • یکشنبه 22 فروردین 1395
  • 16:00

این کد شما بیشترش تکرایه و خیلی طولانی. چرا اول چک نمی کنی اگه تکست باکس خالی بود به جاش صفر بزاری بعد بری عملیات رو انجام بدی؟

کاربر سایت

aramhamid20

عضویت از 1394/06/15

  • یکشنبه 22 فروردین 1395
  • 18:03

اره خیلی زیاد شده 😔

ولی چیکار کنم خواستم اگر کاربر یکی از  textbox رو هم پر کرد بر وعملیات حساب رو انجام بده. 

اگر امکانش هست برام یه نمونه حل کنید؟!؟

کاربر سایت

morteza.cs

عضویت از 1393/08/12

  • یکشنبه 22 فروردین 1395
  • 18:09

شما کافیه قبل از انجام عملیات این مورد رو بررسی کنی

 

   if (txt_A.Text == "")
                txt_A = "0";
            if (txt_B.Text == "")
                txt_B = "0";
            if (txt_C.Text == "")
                txt_C = "0";

و بعدش بقیه عملیات. اینجوری مطمعنی وقتی به عملیات میرسه اگرم کاربر مقداری نزده بود، خوده برنامه صفر رو گذاشته. اگرم میخوای کاربر نبینه که جاهای خالی صفر گذاشتی میتونی واسه هر تکست باکس یه متغیر بگیری و عدد 0 رو توی اون بریزی، بعد هم دیگه با اون کار کنی

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)