سلام
چطور میشه چک کرد که مقدار وارد شده در Textbox کاراکتر غیرعددی داره یا نه؟؟؟
نمیخوام از MaskedTextbox استفاده کنم.
سلام
چطور میشه چک کرد که مقدار وارد شده در Textbox کاراکتر غیرعددی داره یا نه؟؟؟
نمیخوام از MaskedTextbox استفاده کنم.
یعنی واقعا کسی نیست بدونه چطور میشه این کار رو کرد؟؟؟
دلیل اینکه کسی پاسخ نمیده این نیست که کسی نمیدونه! بلکه این سوال شما بارها تو همین تالارها مطرح شده و سوال پیش پا افتاده ای محسوب میشه.
// نتیجه
bool dataValid = true;
// متن
string buffer = textBox1.Text;
// بررسی
foreach (char alpha in buffer)
{
if (!char.IsDigit(alpha))
{
dataValid = false;
return;
}
}
اگر میخواهید محتوای تکست باکس را به عدد تبدیل کنیدint num;
try
{
num = int.Parse(textBox2.Text.Trim());
}
catch (System.FormatException formatEx)
{
//MessageBox.Show(formatEx.Message);
}
اگر catch انجام بشه یعنی محتوا خالی و یا شامل کاراکتر غیرعددی بوده.
ممنون بابت راهنماییتون.
حالا من این کد رو واسه Textbox یی که به گرید اضافه کردم به شکل زیر استفاده کردم ولی خطا میده...
private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
bool dataValid = true;
if (e.ColumnIndex == 0)
{
string buffer = dataGridView1[0, e.RowIndex].Value.ToString();
foreach (char alpha in buffer)
{
if (!char.IsDigit(alpha))
{
dataValid = false;
return;
}
}
if (dataValid == false)
dataGridView1.CurrentCell.ErrorText = "مقدار این فیلد باید از نوع عددی باشد";
}
}
اینم خطاش
Object reference not set to an instance of an object.
خطا رو از خط شماره 6 کد بالا میگیره...
میتونید با یک ترفند رویدادهای تکست باکس را برای سلول گریدویو بسازید
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == dataGridView1.Columns["Column1"].Index)
{
TextBox txt = e.Control as TextBox;
txt.KeyPress += new KeyPressEventHandler(txt_KeyPress);
}
}
void txt_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar));
}
به جای Column1 نام ستون مورد نظر را بذارید.
در رویداد EditingControlShowing میتونید سلول مورد نظر را با استفاده از e به کنترلهای دیگر مثلا تکست باکس و یا کمبوباکس و ... کست کنید تا بتونید رویدادهای کنترلهای دیگر رو شبیه سازی کنید.
آخرین ویرایش به وسیله Mahmoud.Afrad : شنبه 25 شهریور 1391 در 22:36 عصر
مرسي mafaman2003.
ترفندت عالي بود. رويداد KeyPress به خوبي كار ميكنه ولي تو روبداد TextChanged هميشه قسمت Catch اجرا ميشه.(عدد وروديم هم در بازه int هستش). نميدونم چرا؟؟!
TextChanged حذف کن. پست قبل رو آپدیت کردم.
همون KeyPress کافیه و فقط عدد دریافت میکنه. البته اگر بخواهید از متنی را کپی و داخل سلول پست کنید باید از رویدادهای دیگر گریدویو استفاده کنید و با try .. catch که قبلا گفتم تشخیص بدی.