PDA

View Full Version : سوال: خاصیت Limited to list برای Cobo Box



ali190
پنج شنبه 20 بهمن 1390, 22:36 عصر
باسلام و عرض خسته نباشید
چطور میشه برای یک کمبو باکس خاصیت Limit to list رو در نظر گرفت ، بطوریکه کاربر فقط از داخل همون لیست داده هاش رو انتخاب کنه و در غیر این صورت Error دریافت کنه
البته نمیخوام خاصیت DropDownstyle کمبو باکی رو برابر DropDownList قرار بدم
چون میخوام توش تایپ کنم
ممنونم
یاعلی

Hossis
جمعه 21 بهمن 1390, 10:33 صبح
یعنی میخواید تایپ کنید و اگر آنچه تایپ شده, تو لیست نبود, ارور بده و اگر بود, همون رو انتخاب کنه؟؟؟

این فقط با یک شرط گذاشتن قابل حله
If cb.items.contains(cb.text) Then
...
Else
magbox("ERROR...")
End If

ali190
جمعه 21 بهمن 1390, 11:00 صبح
سلام
تست کردم نشد
ملاحظه بفرمائید

If ComboBox2.Items.Contains(ComboBox2.Text) Then
MsgBox("Ok")
Else
MsgBox("Not Ok")
End If

Hossis
جمعه 21 بهمن 1390, 11:07 صبح
سلام
تست کردم نشد
ملاحظه بفرمائید
ولی من تست کردم درست بود
البته با این کد

Private Sub CB_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox2.KeyDown
If e.KeyCode = 13 Then
If ComboBox2.Items.Contains(ComboBox2.Text) Then
MsgBox("Ok")
Else
MsgBox("Not Ok")
End If
End If
End Sub

Hossis
جمعه 21 بهمن 1390, 11:08 صبح
یعنی من اول چند آیتم مثل : علی , حسن, رضا , محمود , به کامبو اضافه کردم , بعد توی اون تایپ کردم: رضا و اینتر رو زدم و درست جواب داد
نمی دونم منظور شما دقیقا همینه یا چیز دیگه ای هست

ali190
جمعه 21 بهمن 1390, 11:11 صبح
سلام
مقدار وارد شده چه در لیست گزینه ها باشه چه نباشه پیغام "Not Ok" صادر میشه

فرید نجفلو
جمعه 21 بهمن 1390, 11:40 صبح
البته اگه کدتون تو رویداد leave باشه بهتره:


Private Sub ComboBox1_Leave(sender As System.Object,e As System.EventArgs)Handles ComboBox1.Leave


If NotComboBox1.Items.Contains(ComboBox1.Text) Then


MsgBox("please Select a item")


ComboBox1.Select()


End If


EndSub

ali190
جمعه 21 بهمن 1390, 12:01 عصر
سلام
مقدار وارد شده چه در لیست گزینه ها باشه چه نباشه پیغام "please Select a item" صادر میشه

shadi khanum
جمعه 21 بهمن 1390, 14:32 عصر
شاید مشکل از یه جای دیگه کدتون باشه.. یا شاید کلماتی که تایپ میکنید فارسی و مثلا ی یا ک توی اونها هست و یکیشون فارسی و دیگری عربی باشه.. این ی و ک توی سرچ فارسی خیلی دردسر سازه چون باید هر دو تا تبدیل به فارسی یا عربی بشن..

ali190
جمعه 21 بهمن 1390, 17:15 عصر
نه تمام کلماتم انگلیسی هست
اگر امکانش هست اون کدهای بالا رو در قالب یک پروژه ضمیمه کنید
ممنون میشم
یاعلی

alimanam
شنبه 22 بهمن 1390, 01:17 صبح
با سلام

این کد رو تست کن باید درست کار کنه من با آیتم های فارسی تست کردم کار میکرد .

Private Sub cbo1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles cbo1.KeyUp
If Not cbo1.Items.Contains(cbo1.Text.Trim) Then
Me.Text = "Please come back !"
Else
Me.Text = "All right !"
End If
End Sub

موفق باشید./

shadi khanum
شنبه 22 بهمن 1390, 11:32 صبح
با سلام

این کد رو تست کن باید درست کار کنه من با آیتم های فارسی تست کردم کار میکرد .

Private Sub cbo1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles cbo1.KeyUp
If Not cbo1.Items.Contains(cbo1.Text.Trim) Then
Me.Text = "Please come back !"
Else
Me.Text = "All right !"
End If
End Sub

موفق باشید./
دوست عزیز کدی که نوشتید چون تو رویداد keyup تست میکنه تا قبل از اینکه کلمه کامل نوشته بشه contains نیست مرتبا پیغام come back میده مسلما، و کاربر دچار اشتباه میشه که بالاخره comeback کنه یا ادامه بده..
واسه چیزی که دوستمون میخواد به نظرم بهترین شکلش این Sample باشه.کلماتی که بصورت test توی کمبو هست ali,amir,reza,farhad که اگه اینها رو تایپ کنید مشکلی نداره و اجازه نمیده به جز اینها رو تایپ کنید توی کمبو.
موفق باشی

ali190
شنبه 22 بهمن 1390, 11:54 صبح
سلام
ممنونم shadi khanum
ولی وقتی خاصیت AutoCompleteMode رو فعال میکنی دیگه عمل نمیکنه

alimanam
شنبه 22 بهمن 1390, 14:56 عصر
با سلام

اول از بابت اینکه درست مطالب پست اول رو نخوندم عذر میخوام , برای رفع مشکل AutoComplete باید برای کمبوباکس یک AutoCompleteStringCollection بنویسی تا یک منبع برای فیلترینگ داشته باشه . ( یادت نره که AutoCompleteSource رو به CustomSource ست کنی )

موفق باشید./