چک کردن اینکه مقدار وارد شده در Textbox کاراکتر غیرعددی نداشته باشه
سلام
چطور میشه چک کرد که مقدار وارد شده در Textbox کاراکتر غیرعددی داره یا نه؟؟؟
نمیخوام از MaskedTextbox استفاده کنم.
نقل قول: چک کردن اینکه مقدار وارد شده در Textbox کاراکتر غیرعددی نداشته باشه
یعنی واقعا کسی نیست بدونه چطور میشه این کار رو کرد؟؟؟ :متعجب:
نقل قول: چک کردن اینکه مقدار وارد شده در Textbox کاراکتر غیرعددی نداشته باشه
دلیل اینکه کسی پاسخ نمیده این نیست که کسی نمیدونه! بلکه این سوال شما بارها تو همین تالارها مطرح شده و سوال پیش پا افتاده ای محسوب میشه.
// نتیجه
bool dataValid = true;
// متن
string buffer = textBox1.Text;
// بررسی
foreach (char alpha in buffer)
{
if (!char.IsDigit(alpha))
{
dataValid = false;
return;
}
}
نقل قول: چک کردن اینکه مقدار وارد شده در Textbox کاراکتر غیرعددی نداشته باشه
اگر میخواهید محتوای تکست باکس را به عدد تبدیل کنید int num;
try
{
num = int.Parse(textBox2.Text.Trim());
}
catch (System.FormatException formatEx)
{
//MessageBox.Show(formatEx.Message);
}
اگر catch انجام بشه یعنی محتوا خالی و یا شامل کاراکتر غیرعددی بوده.
نقل قول: چک کردن اینکه مقدار وارد شده در Textbox کاراکتر غیرعددی نداشته باشه
ممنون بابت راهنماییتون.
حالا من این کد رو واسه 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.
نقل قول: چک کردن اینکه مقدار وارد شده در Textbox کاراکتر غیرعددی نداشته باشه
خطا رو از خط شماره 6 کد بالا میگیره...
نقل قول: چک کردن اینکه مقدار وارد شده در Textbox کاراکتر غیرعددی نداشته باشه
میتونید با یک ترفند رویدادهای تکست باکس را برای سلول گریدویو بسازید
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 به کنترلهای دیگر مثلا تکست باکس و یا کمبوباکس و ... کست کنید تا بتونید رویدادهای کنترلهای دیگر رو شبیه سازی کنید.
نقل قول: چک کردن اینکه مقدار وارد شده در Textbox کاراکتر غیرعددی نداشته باشه
مرسي mafaman2003.
ترفندت عالي بود. رويداد KeyPress به خوبي كار ميكنه ولي تو روبداد TextChanged هميشه قسمت Catch اجرا ميشه.(عدد وروديم هم در بازه int هستش). نميدونم چرا؟؟!
نقل قول: چک کردن اینکه مقدار وارد شده در Textbox کاراکتر غیرعددی نداشته باشه
TextChanged حذف کن. پست قبل رو آپدیت کردم.
همون KeyPress کافیه و فقط عدد دریافت میکنه. البته اگر بخواهید از متنی را کپی و داخل سلول پست کنید باید از رویدادهای دیگر گریدویو استفاده کنید و با try .. catch که قبلا گفتم تشخیص بدی.