PDA

View Full Version : سوال: مشکل در خالی کردن TextBox



lovee20002002
دوشنبه 16 اردیبهشت 1392, 20:39 عصر
سلام دوستان من بعد از سیو میخوام تکس باکسام خالی بشه مشکلی با این نیست با string.Empty خالی میکنه بعد چون بعضی فیلدام گاهی فعال هستند گاهی نیستند باید اونا رو هم خالی کنم ولی چون داده ها int هستند باید 0 پیشفرض بزارم تا موقع ذخیره به مشکل نخوره اینم با textbox.text = "0"; انجام میدم ولی چون برای تغییر تکس باکسها متود دارم ارور میده دوستان راهی دارن برای این کارم خودم فکر کردم فرم یک بار ریست بشه ولی منطقی نیست

Mahmoud.Afrad
دوشنبه 16 اردیبهشت 1392, 20:45 عصر
نیازی نیست صفر در تکست باکس ها قرار بدید بزارید تکست باکسها خالی باشند. در زمان ثبت چک کنید اگر خالی بود صفر درج کنید.

lovee20002002
دوشنبه 16 اردیبهشت 1392, 20:50 عصر
درسته تست کردم ولی به محض خالی شدن اررور میده
گفتم کد نویسی کم بشه ولی برای متد ها باید یک شرط بزارم خالی بود عمل نکنن راه بهتری نیست؟

sgh_programer
دوشنبه 16 اردیبهشت 1392, 20:58 عصر
بنام خدا
سلام
دوست عزیز من خودم یکبار به این مشکل بر خورده بودم من البته تکست هام بهشون بایند میشد اینجوری خالیشون میکردم


textBox1.DataBindings.Clear();
textBox1.Text = "";


شاید مشکلت رو حل کنه (البته درست متوجه منظور شما نشدم)

موفق باشی

lovee20002002
دوشنبه 16 اردیبهشت 1392, 21:07 عصر
ممنون نه بایدند نشده با چند تا شرط حل کردم ولی اگه تعداد تکس باکسا زیاد باشه مشکل میشه

if(string.IsNullOrEmpty(txtNumP.Text))
txtNumP.Text="0";

veniz2008
دوشنبه 16 اردیبهشت 1392, 21:32 عصر
در زمان ثبت چک کنید اگر خالی بود صفر درج کنید.
سلام.
کافیه متن TextBox رو برای sql بفرستید. حتی اگر تکست باکس خالی باشه خودش بصورت خودکار برای اون فیلد مقدار 0 رو درج میکنه و نیازی نیست که ما با شرط چک کنیم و اگر خالی بود اونوقت 0 رو قرار بدیم.
در مثال زیر، فیلد Birthday از نوع int هست و امکان خالی بودن رو داره و کاربر میتونه مقدارش رو خالی بگذاره. با کد زیر اگر براش مقداری وارد نشه، بصورت پیش فرض براش 0 ثبت میشه.

SqlConnection con = new SqlConnection("server = .\\md2008;database = Test1;Integrated Security = True");
SqlCommand cmd = new SqlCommand("AddStudent", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@firstname", TxtName.Text.Trim());
cmd.Parameters.AddWithValue("@lastname", TxtFamily.Text);
cmd.Parameters.AddWithValue("@birthday", TxtBirthDay.Text);
cmd.Parameters.AddWithValue("@gender", CmbGender.SelectedIndex);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

fool66
دوشنبه 16 اردیبهشت 1392, 21:46 عصر
مقدار های پیشفرضی که میخوای تکست باکس ها داشته باشن توی FormLode بنویس بعد از ثبت یه بار کد زیر رو اجرا کن

Form1_Load(null,null);

Mahmoud.Afrad
سه شنبه 17 اردیبهشت 1392, 02:58 صبح
ولی چون برای تغییر تکس باکسها متود دارم ارور میدهمیتونی در رویداد تغییر متن تکست باکس یه شرط بزاری که اگر متن خالی بود کدهای داخل رویداد اجرا نشه در اینصورت نیاز نیست متن تکست باکس را 0 کنید.

lovee20002002
سه شنبه 17 اردیبهشت 1392, 08:46 صبح
ممنون دوستان با این حل شد
Form1_Load(null,null);

volcano_c
سه شنبه 17 اردیبهشت 1392, 09:42 صبح
سلام دوست عزیز

چرا از ارث بری استفاده نمی کنی تا دیگه توی همه تکست باکس ها این کار رو انجام ندی!!!

یک کلاس درست کن که از TextBox ارث بری کنه بعد هر متدی می خوای رو override کن

مثل کد زیر :

public class TextBoxNew:System.Windows.Forms.TextBox
{
protected override void OnTextChanged(EventArgs e)
{
if (string.IsNullOrEmpty(this.Text))
this.Text = "0";

base.OnTextChanged(e);
}
}

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

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

مثل این کد :

public class TextBoxNew:System.Windows.Forms.TextBox
{
protected override void OnTextChanged(EventArgs e)
{
if (IsNullZero)
{
if (string.IsNullOrEmpty(this.Text))
{
this.Text = "0";
}
}
base.OnTextChanged(e);
}

public bool IsNullZero { get; set; }
}


این کد هم یکم از خاصیت های propertyها استفاده کردم شاید جالب باشه برای دوستان

public class TextBoxNew:System.Windows.Forms.TextBox
{
protected override void OnTextChanged(EventArgs e)
{
if (IsNullZero)
{
if (string.IsNullOrEmpty(this.Text))
{
this.Text = "0";
}
}
base.OnTextChanged(e);
}

[System.ComponentModel.Browsable(true),System.Compo nentModel.DefaultValue(false),
System.ComponentModel.Description("barae zamini k mikhahid megdare empty 0 bashe"),
System.ComponentModel.Category("extra")]
public bool IsNullZero { get; set; }
موفق باشی