PDA

View Full Version : سوال: ساختن Masked ComboBox



حجتی نیا
یک شنبه 07 شهریور 1389, 11:55 صبح
اطلاعاتی توی کمبو هست (اعداد کسری مثلا 1/40) .. کاربر هم میتونه اعداد جدید وارد کنه اما به همین شکل باید وارد بشه.(تو مایه های masked Textbox)
چطوری باید اینکار انجام بشه؟؟

cheshm6k
دوشنبه 08 شهریور 1389, 01:48 صبح
سلام .

از این کد


if ((!char.IsDigit(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
{
if (!((e.KeyChar == '/') && (!comboBox1.Text.Contains("/"))))
e.Handled = true;
}
یا از این کد

if ((!char.IsDigit(e.KeyChar)) && (e.KeyChar != (char)Keys.Back) &&(e.KeyChar!='/'))
{
e.Handled = true;
}
if ((e.KeyChar == '/') && (comboBox1.Text.Contains("/")))
e.Handled = true;
می تونید تو رویداد KeyPress کامبوباکس استفاده کنید. جفتش یه کار انجام میده.
فقط اعداد و یه دونه "/" میگیره.

حالا اگه طول اعداد اینور و اونور اسلش واست مهمه میتونی همین کدها رو یخورده تغییر بدی.

موفق باشید.

حجتی نیا
دوشنبه 08 شهریور 1389, 10:53 صبح
ممنون ازتون ولی این کد هارو که بلدم ..

حالا اگه طول اعداد اینور و اونور اسلش واست مهمه میتونی همین کدها رو یخورده تغییر بدی.

همینش مهمه .. اعدادی که وارد میشن باید بین 40/1 تا 100/1 باشه

cheshm6k
دوشنبه 08 شهریور 1389, 11:52 صبح
همینش مهمه .. اعدادی که وارد میشن باید بین 40/1 تا 100/1 باشه

خوب اونم میتونی با خاصیت length متن کامبو چک کنی . اگه صفر بود فقط باید عدد وارد شه اگه یک بود فقط اسلش و ............ اگه اینور اسلش همیشه یکه حتی میتونی خودت /1 رو بزاری و چک کنی که کاربر نتونه پاکش کنه

اینو ببین

if (e.KeyChar != (char)Keys.Back)
{
if ((comboBox1.Text.Length == 0) || ((comboBox1.Text.Length > 1)))
{
if (!char.IsDigit(e.KeyChar))
e.Handled = true;
}
else
{
if (e.KeyChar != '/')
e.Handled = true;
}

}

یا این

if (e.KeyChar != (char)Keys.Back)
{
if (comboBox1.Text.Length == 1)
{
if (e.KeyChar != '/')
e.Handled = true;
}
else
{
if (!char.IsDigit(e.KeyChar))
e.Handled = true;
}
}
اینا نمونه کد از الگوریتمیه که گفتم. دومیه بهینه تره . ازش ایده بگیرو نسبت به نیازت هوشمندترش کن. آها، خاصیت MaxLength کامبو رو هم بزار 5.

موفق باشی.