PDA

View Full Version : استفاده از masked textbox یا چیزی مثل اون در datagridview



tnoohi
یک شنبه 15 بهمن 1385, 15:20 عصر
در data grid view یک ستون دارم که مقدار ورودی آن حتما باید عددی باشد و هر سه رقم آن جدا شود
مثلا 123.456.78
دوستان در صورت امکان راهنمایی کنید.

PC2st
یک شنبه 15 بهمن 1385, 18:46 عصر
یک روش اینه تا بخوای با سی شارپ محدودیت گذاری کنی.
اگر بخوای محدودیت رو از طریق سی شارپ به مقدار ورودی موجود در سلول اعمال کنی باید از رخداد CellEndEdit (این رخداد زمانی روی میدهد که ویرایش سلول تمام شده باشد) برای DataGridView استفاده کنی و مقدار داده ورودی رو به به کمک کد زیر (که همان مقدار داده گرفته شده از کاربر است و در سلول قرار دارد) ارزیابی کنی:
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()
که البته کد فوق مقدار داده ورودی در سلول را به رشته تبدیل کرده است و برای محدودیت گذاری میشه مثلا اول سه حرف اول مقدار رو میگری و به عدد تبدیل میکنی و بعدش سه حرف بعدی رو میگیری و به عدد تبدیل میکنی و آخرش به چیزی مثل 123.456.78 تبدیلش میکنی یا محدودیت میگذاری که مثلا اگر مقدار بالا بعد از سه عددش (مقداری که کاربر وارد کرده) یک نقطه بود، اونوقت قابل قبوله و در غیر اینصورت خیر یا ...

hrshojaei
دوشنبه 16 بهمن 1385, 08:23 صبح
سلام ، گذاشتن محدودیت که فقط عدد بگیره سخته ، یا لااقل من نتونستم راهی براش پیدا کنم . تو MSDN یه روش هست ولی به نظر من خیلی سخت اومد . اما می تونی بعد از خروج از Cell اونو چک کنی و جلوی خروج از سلولو بگیری در رویداد Validating . برای اینکه 3 رقم جدا بشه هم هنگام تایپ سخته . من یه راه پیدا کردم ولی نمی دونم چرا گاهی قاط می زنه . اما راه سادش اینه بعد از خروج از سلول در رویداد CellValueChanging مقدار سلولو به عدد تبدیل کنی بعد با متود ("#,#") ToString اونو سه رقم سه رقم جدا کنی . البته این متود فقط روی عدد کار می کنه . در ضمن یادت باشه اگه بعداً خواستی از مقدار سلولت به عنوان عدد استفاده کنی باید ویرگولارو حذف کنی .

leilav_1984
دوشنبه 16 بهمن 1385, 08:56 صبح
پیشنهاد میکنم کلا برای ورود یا ویرایش از Grid استفاده نکنید
Grid برای نمایش اطلاعات مناسبه و نوشتن در اون برای اغلب کاربرها سخته و احتمال اشتباه هم خیلی زیاده

Happy_davood
چهارشنبه 18 بهمن 1385, 08:50 صبح
سلام
می تونید و کاراکتر های ورودی به فیلتر کنید . برای این کار در وقفه KeyPress از فرمی که Grid روی اون قرار داره کد زیر رو بزارید :





if (this.dataGridView.CurrentCell != null)
{
if (this.dataGridView.CurrentCell.IsInEditMode == true)
{
switch (this.dataGridView.CurrentCell.ColumnIndex)
{
case 0:
if ((e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == '\b')
e.Handled = false;
else
e.Handled = true;
break;
case 1:
if ((e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == '\b')
e.Handled = false;
else
e.Handled = true;
break;
}
}
}



با این کد ستون شماره صفر و یک فقط عدد تایپ میشه .

sorosh_89
جمعه 16 تیر 1391, 12:22 عصر
با سلام خدمت همه دوستان
اساتید من یک مشل دارم . می خواهم هنگام تایپ رقم در یک سلول کاما بین 3 رقم بگذارد. و این خیلی برام حیاتیه ... مرسی