PDA

View Full Version : عوض کردن خاصیت keypress در textbox با combobox ؟



bazikadeh
چهارشنبه 05 آذر 1393, 15:25 عصر
من میتونم خاصیت keypress در textbox را فقط عدد قرار بدهم که کاربر اگه حروف وارد کرد پیغام بده.
حالا چطوری کاری کنم که با انتخاب کامبو خاصیت keypress در textbox عوض بشه یعنی فقط متن فارسی یا فقط عدد را وارد کنیم ؟

mrprestige
چهارشنبه 05 آذر 1393, 16:30 عصر
من میتونم خاصیت keypress در textbox را فقط عدد قرار بدهم که کاربر اگه حروف وارد کرد پیغام بده.
حالا چطوری کاری کنم که با انتخاب کامبو خاصیت keypress در textbox عوض بشه یعنی فقط متن فارسی یا فقط عدد را وارد کنیم ؟

سلام دوست من ، شما میتونی توی خاصیت Selected Index Changed مربوط به کنترل کمبو باکس خودت این خط کد رو بنویسی


if (comboBox1.SelectedIndex == 0)
{
textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);

}


دقت کن بعد از اینکه علامت + و بعد از اون = رو قرار دادی دو بار کلید Tab روی کیبورد رو بزن (اینطوری با کدنویسی یه رویداد برای تکس باکست نوشتی) بعد که این کارا رو کردی توی همون Event که برای تکس باکس درست کردی این خط کد رو مینویسی

if (e.KeyChar >= '0' && e.KeyChar <= '9')
{
e.Handled = true;
}
else
{
e.Handled = false;
}
if (comboBox1.SelectedIndex == 1)
{
if (e.KeyChar < '0' || e.KeyChar > '9')
{
e.Handled = true;
}
else
{
e.Handled = false;
}
}

parvizwpf
چهارشنبه 05 آذر 1393, 16:33 عصر
regEx استفاده کنید.

bazikadeh
چهارشنبه 05 آذر 1393, 17:10 عصر
سلام دوست من ، شما میتونی توی خاصیت Selected Index Changed مربوط به کنترل کمبو باکس خودت این خط کد رو بنویسی


if (comboBox1.SelectedIndex == 0)
{
textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);

}


دقت کن بعد از اینکه علامت + و بعد از اون = رو قرار دادی دو بار کلید Tab روی کیبورد رو بزن (اینطوری با کدنویسی یه رویداد برای تکس باکست نوشتی) بعد که این کارا رو کردی توی همون Event که برای تکس باکس درست کردی این خط کد رو مینویسی

if (e.KeyChar >= '0' && e.KeyChar <= '9')
{
e.Handled = true;
}
else
{
e.Handled = false;
}
if (comboBox1.SelectedIndex == 1)
{
if (e.KeyChar < '0' || e.KeyChar > '9')
{
e.Handled = true;
}
else
{
e.Handled = false;
}
}


یه خورده گیج شدم توی سلکت کامبو بنویسم بعد اون خط هم توابع ای که میخواهم اجرا بشه با زدن کلید درسته ؟

mrprestige
چهارشنبه 05 آذر 1393, 18:21 عصر
ببین شما بلافاصله بعد از اینکه =+ رو نوشتی دوبار کلید Tab روی کیبورد رو بزن بطور خودکار برنامه رویداد Keypress مربوط به تکس باکست رو ایجاد میکنه توی اون تابع خط کدی وجود داره
throw new NotImplementedException این خط کد رو پاک کن . پاکش که کردی حالا اون قسمت دوم کدی که بالا برات نوشتم . نوشتی تموم شد برنامه رو اجرا کن حالا هر موقع گزینه ای از کمبو باکس انتخاب کنی ( باتوجه به ایندکس) Event مربوط به تکس باکست که همون keypress هست عوض میشه . باز اگه متوجه نشدی بگو بیشتر توضیح بدم

bazikadeh
چهارشنبه 05 آذر 1393, 20:50 عصر
فقط کد های عددی کردن با امکان پاک کردن + کلید اینتر هم توی اون غیر فعال باشه دارین ؟

mrprestige
پنج شنبه 06 آذر 1393, 11:56 صبح
فقط کد های عددی کردن با امکان پاک کردن + کلید اینتر هم توی اون غیر فعال باشه دارین ؟

کاری نداره کافیه کد اسکی مربوط به دکمه ها رو بدونی و بعدش با قرار دادن شرط یه جور فیلتر بزاری که اگه بازدن دکمه اینتر یا Backspace یا هر دکمه دیگه ، عمل handled (دسترسی) برابر true بشه یا false . موفق باشی

bazikadeh
پنج شنبه 06 آذر 1393, 16:51 عصر
نمونه میشه بزارین ؟

mrprestige
پنج شنبه 06 آذر 1393, 17:42 عصر
نمونه میشه بزارین ؟

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


if ((!char.IsDigit(e.KeyChar)&&(!char.IsControl(e.KeyChar))))
{
e.Handled = true;
}
else
{
e.Handled = false;
}



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

Share & Learn
پنج شنبه 06 آذر 1393, 17:49 عصر
فکر کنم منظورتون همچین چیزی هست

http://www.shiaupload.ir/images/37214903640354302667.png

bazikadeh
پنج شنبه 06 آذر 1393, 19:08 عصر
1- میشه مثلا حروف انگلیسی تایپ نشه یعنی فقط حروف فارسی ؟
2- و اینکه برای اینکه کل پروژه اعداد فارسی باشه باید چی کرد ؟

Share & Learn
پنج شنبه 06 آذر 1393, 19:11 عصر
1- اون کد رو اینطوری تغییر بدید:


if (comboBox1.SelectedIndex == 1)
{
//if (!(char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Back))
//{
// e.Handled = true;
//}

if ((e.KeyChar >= 'a' && e.KeyChar <= 'z') || (e.KeyChar >= 'A' && e.KeyChar <= 'Z') || (e.KeyChar >= '0' && e.KeyChar <= '9'))
e.Handled = true;
}


2- برای اعداد باید تو Properties فرم مورد نظر یک فونت فارسی انتخاب کنید

bazikadeh
پنج شنبه 06 آذر 1393, 19:28 عصر
خوب اگه فونت فارسی انتخاب کنیم برای ورد در بانک مشکلی رخ نمیده ؟
بعد این فونت ها هم راه نرم افزار بعدا که ستاپ بسازم میان ؟ یا خودمون باید دستی وارد کنیم

danialafshari
پنج شنبه 06 آذر 1393, 20:04 عصر
با سلام
هر تاپیک مختص به یک سواله! قوانین سایت را رعایت کنید