سلام به دوستای خوبم :)
یه سوال داشتم؟ من این فرم رو برای ماشین حساب طراحی کردم. میخواستم اگر کاربر در یکی از این texbox بجز شماره چیزی دیگه ای وارد کرد بهم بگه که اشتباه وارد کردی
از ( try catch ) استفاده کنم خوبه ؟
میخواهید فقط عدد وارد کنه ؟
میتونید ار رویداد 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; } }
بله فقط عدد وارد کنه.
ولی اگر یکی از 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(); } } } }
این کد شما بیشترش تکرایه و خیلی طولانی. چرا اول چک نمی کنی اگه تکست باکس خالی بود به جاش صفر بزاری بعد بری عملیات رو انجام بدی؟
اره خیلی زیاد شده 😔
ولی چیکار کنم خواستم اگر کاربر یکی از textbox رو هم پر کرد بر وعملیات حساب رو انجام بده.
اگر امکانش هست برام یه نمونه حل کنید؟!؟
شما کافیه قبل از انجام عملیات این مورد رو بررسی کنی
if (txt_A.Text == "") txt_A = "0"; if (txt_B.Text == "") txt_B = "0"; if (txt_C.Text == "") txt_C = "0";
و بعدش بقیه عملیات. اینجوری مطمعنی وقتی به عملیات میرسه اگرم کاربر مقداری نزده بود، خوده برنامه صفر رو گذاشته. اگرم میخوای کاربر نبینه که جاهای خالی صفر گذاشتی میتونی واسه هر تکست باکس یه متغیر بگیری و عدد 0 رو توی اون بریزی، بعد هم دیگه با اون کار کنی
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)