PDA

View Full Version : فقط خواندنی کردن combobox



l_bahid_l
جمعه 14 فروردین 1388, 14:29 عصر
سلام
چطور میتونم omboboxرا فقط خواندنی (read only) کنم چون خاصیت readonly برای combobox پیدا نکردم.

rnm123
جمعه 14 فروردین 1388, 14:53 عصر
دوست عزیز برای این کار میتوانید خاصیت dropDownStyle کومبوبوکس را برابر با dropDownList قرار دهید در اینصورت کاربر فقط اطلاعات را از لیست کومبوبوکس میتواند انتخاب کند و نمی تواند بطور دستی اطلاعات وارد کند

antisocial
جمعه 14 فروردین 1388, 15:03 عصر
دوست عزیز تو رویداد Keypress کمبو باکس این کد رو بنویس


e.handled=true

rnm123
جمعه 14 فروردین 1388, 15:32 عصر
دوست عزیز تو رویداد Keypress کمبو باکس این کد رو بنویس


e.handled=true

دوست عزیز ان وقت اگه کاربری بخواهد با کلید tab روی کومبو برود و باکلیدهای جهت نما در آیتم های لیست حرکت کند که با مشکل روبرو میشود !

antisocial
جمعه 14 فروردین 1388, 16:41 عصر
میتونیم برای دکمه ی تب یه ایف در نظر بگیریم.خیلی ساده اس.من قبلا از روش شما استفاده کردم اما اون مشکلات زیادی رو داره که من الان اونا رو یادم نمیاد.یکیش فکر میکنم این بود که همیشه کمبو باکس به طور پیشفرض یه چیز رو انتخاب کرده باشه.(به طور اجباری)
شاید ما بخوایم کمبو باکس هیچ چیز رو انتخاب نکنه و کاربر اونو انتخاب کنه.دومیش هم فکر میکنم مشکلات هات کی بود که اگر کمبو باکس فارسی بود جستجو یا اشتباه انجام میشد یا اصلا نمی شد خوب یادم نیست.در غیر این موارد حق با شماست
با این دستور همه چیز حله توی رویداد کی پرس
if (e.KeyChar == (char)Keys.Tab || e.KeyChar == (char)Keys.Up || e.KeyChar == (char)Keys.Left || e.KeyChar == (char)Keys.Right || e.KeyChar == (char)Keys.Down)
{
e.Handled = false;
SendKeys.Send("{tab}");
}

else e.Handled = true;

rnm123
جمعه 14 فروردین 1388, 23:51 عصر
میتونیم برای دکمه ی تب یه ایف در نظر بگیریم.خیلی ساده اس.من قبلا از روش شما استفاده کردم اما اون مشکلات زیادی رو داره که من الان اونا رو یادم نمیاد.یکیش فکر میکنم این بود که همیشه کمبو باکس به طور پیشفرض یه چیز رو انتخاب کرده باشه.(به طور اجباری)
شاید ما بخوایم کمبو باکس هیچ چیز رو انتخاب نکنه و کاربر اونو انتخاب کنه.دومیش هم فکر میکنم مشکلات هات کی بود که اگر کمبو باکس فارسی بود جستجو یا اشتباه انجام میشد یا اصلا نمی شد خوب یادم نیست.در غیر این موارد حق با شماست
با این دستور همه چیز حله توی رویداد کی پرس
if (e.KeyChar == (char)Keys.Tab || e.KeyChar == (char)Keys.Up || e.KeyChar == (char)Keys.Left || e.KeyChar == (char)Keys.Right || e.KeyChar == (char)Keys.Down)
{
e.Handled = false;
SendKeys.Send("{tab}");
}

else e.Handled = true;


البته دوست عزیز بنده به نکات خوبی اشاره کرده اند اما :
میتونی خیلی راحت یک آیتم " هیچکدام " را در اندیس صفر لیست خود اضافه کنی که کارت را راحتتر هم میکنه
در استفاده از کلمات فارسی هیچگونه خطایی من که تا به حال ندیدم اما وقوع این خطا در هر دو حالت با هم برابر است و اصلا در دو روش تفاوتی در نحوه ذخیره اطلاعات موجود نیست ( اطلاعاتی در هر دو حالت وارد نخواهد شد و این اطلاعات قبلا ذخیره شده اند)
و نکته مهم دیگر اینکه ذات برنامه نوسی یعنی همین . برای یک مشکل هزاران راه حل است و هر برنامه نویس به کمک هوش و توانایی و دانش خود آنرا به روش های متفاوتی حل میکند روش هایی که نه متضاد هم بلکه به موازات هم هستند و فقط در بهینه بودن فرق میکنند
خب دوست عزیز اگر کاربر کلید numLock را خاموش کند و بخواهد با کلیدهای num به بالا و پایین برود شما باید آنها را کنترل کنید. درسته !

ahmadr
شنبه 15 فروردین 1388, 00:26 صبح
در رویداد KeyPress :


private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if(!char.IsControl(e.KeyChar))
e.KeyChar='\0';
}

mtaboy
شنبه 15 فروردین 1388, 00:42 صبح
دوست عزیز برای این کار میتوانید خاصیت dropDownStyle کومبوبوکس را برابر با dropDownList قرار دهید در اینصورت کاربر فقط اطلاعات را از لیست کومبوبوکس میتواند انتخاب کند و نمی تواند بطور دستی اطلاعات وارد کند
معقولانه ترین راه اینه...چرا دوستان استفاده از کد رو پیشنهاد دادند؟

antisocial
شنبه 15 فروردین 1388, 12:44 عصر
مثل اینکه دوستان بیشتر به فکر رو کم کنی هستند تا حل مشکل مردم.من قصدم فقط کمک بود .و تمام مشکلاتی که گفتم مشکلاتی بود که عینا خودم باهاش برخورد کرده بودم.حالا شما ازون روش استفاده کنید .هر جور راحتید.