جلوگیری از ورود مقدار غلط در کمبوباکس (Combobox) در سی شارپ

سوال

توی ویژوال استدیو سی شارپ WPF

یک کمبوباکس دارم که اطلاعات رو از دیتابیس لود و توی کمبوباکسم لیست میکنه

من حالت IsEditable رو هم برای کمبو باکسم فعال کردم که کاربر بتونه علاوه بر انتخاب از لیست اون آیتم مورد نظرش رو تایپ کنه

مسئله اینجاست که اگر این حالت فعال باشه کاربر میتونه مقداری اشتباه یعنی چیزی به غیر از آیتم موجود در لیست هم وارد بکنه و خطایی رخ نده خود WPF من ندیدم قابلیتی برای حل این مشکل داشته باشه , سرچ هایی که توی اینترنت کردم دیدم

برای این مشکل یکی از راه حل هایی که دادن این بود ه بیام مقدار وارد شده در کمبو باکس رو با تمام آیتم های لیست شده کمبوباکس مقایسه کنم اگر توی هیکدوم از اینا نبود خطا بده اینم کدش :

private void cmb_LostFocus(object sender, RoutedEventArgs e)
        {
            bool allowed = false;
            foreach (ComboBoxItem it in cmb.Items)
            {
                if (it.Content.ToString() == cmb.Text)
                {
                    allowed = true;
                    break;
                }
            }
            if (!allowed)
            {
                lblmessages.Content = "Invalid Items";
            }
            else
            {
                lblmessages.Content = "";
            }
        }

 

مشکل این کد این هستش که که برای اطلاعات زیاد اصلا خوب نیست و ممکنه خیلی کند عمل کنه شما فرض کنید توی کمبوباکستون لیست کل شهرستان های ایران باشه بعد بخواد متن وارد شده رو با تک تک این آیتم ها بررسی کنه روند کار رو کند میکنه

توی نرم افزار های دیگه دیدم یه چیزی هست به اسم Not in List که نمیذاره مقداری به جز چیزی که در کمبوباکس موجودی هستش رو تایپ یا انتخاب کنه اما من اینو توی WPF پیدا نکردم

لطفا راهنمایی بفرمایید روش , یک قابلیت یا راهی ساه برای حل این مشکل چیه ؟

باتشکر

0
, ۱۳۹۹/۹/۱۷ ۲:۳۸:۱۸ 0 پاسخ ها کاربر تازه 0

ارسال یک پاسخ