PDA

View Full Version : سوال: کمک درباره انتخاب آیتم combobox با انتخاب عدد مربوطه



akanazi2
چهارشنبه 03 خرداد 1391, 14:06 عصر
من میخوام وقتی کاربر بر در combobox عدد یک رانوشت آیتم اول که اندیس صفر دارد انتخاب شود و اگر 2 را زد اندیس 1 و الی آخر
من برنامه را با if و select امتحان کردم ولی جواب نداد لطفا دوستان راهنمایی کنند در ضمن اگر به غیر از آیتم های combobox بود اشاره گر در خود combobox بماند

فرید نجفلو
چهارشنبه 03 خرداد 1391, 15:51 عصر
سلام
دوست عزیز این کار امکان دادره ولی فکر کردید که ممکنه این روش مشکلاتی داره
مثلا اگه کاربر بخواد آیتم 12 رو انتخاب کنه ابتدا عدد 1 رو وارد می کنه و تا بخواد 2 رو وارد کنه اندیس 1 انتخاب شده و مجالی برای ورد 2 نداره!

A_1397
چهارشنبه 03 خرداد 1391, 16:14 عصر
من میخوام وقتی کاربر بر در combobox عدد یک رانوشت آیتم اول که اندیس صفر دارد انتخاب شود و اگر 2 را زد اندیس 1 و الی آخر
من برنامه را با if و select امتحان کردم ولی جواب نداد لطفا دوستان راهنمایی کنند در ضمن اگر به غیر از آیتم های combobox بود اشاره گر در خود combobox بماند

combox.Text = (combox.Items(combox.Text))


سلام
دوست عزیز این کار امکان دادره ولی فکر کردید که ممکنه این روش مشکلاتی داره
مثلا اگه کاربر بخواد آیتم 12 رو انتخاب کنه ابتدا عدد 1 رو وارد می کنه و تا بخواد 2 رو وارد کنه اندیس 1 انتخاب شده و مجالی برای ورد 2 نداره!

برای حل این مشکل هم می تونید دستور بالا رو توی رویداد keydown کمبوباکستون بنویسید که مثلا اگه کاربر کلید enter رو فشار داد اتفاق مورد نظر بیوفته:
PrivateSub combox_KeyDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyEventArgs) Handles combox.KeyDown
If e.KeyCode = Keys.Enter Then
combox.Text = (combox.Items(combox.Text))
EndIf
EndSub

فرید نجفلو
چهارشنبه 03 خرداد 1391, 17:36 عصر
من نگفتم نمیشه فقط گفتم باید مواظب خطراتش هم باشید
مثلا اگه با کد شما اگه کاربر با کلید های جهت دار و Enter بخواد انتخاب کنه مشکل پیش میاد(البته شکل صحیص نیست)
برای مثال اگه مورد چهارم لیست عدد 2 باشه با انتخاب اوت نه عدد دو بلکه مقدار موجود در مورد دوم انتخاب میشه!!!

اینم کد اصلاحی:

Private Sub ComboBox1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyDown
If e.KeyCode = Keys.Enter AndAlso IsNumeric(ComboBox1.Text) AndAlso _
CDbl(ComboBox1.Text) > 0 AndAlso CDbl(ComboBox1.Text) <= ComboBox1.Items.Count Then
ComboBox1.SelectedIndex = CInt(ComboBox1.Text) - 1
End If
End Sub

akanazi2
چهارشنبه 03 خرداد 1391, 18:44 عصر
کد دومی درست کارکرد ولی وقتی که یک عدد به غیر از 1 و 2 انتخاب می کنی با نشان می ده ولی خودم کدی را نوشتم که درست است زیاده ولی جواب را تا 10 آیتم درست جواب میده البته من متغیر هم تعریف کردم که نمی خواست
یک combobox ایجاد کردم و آیتم های "مرد" و "زن" را به آن اضافه کردم تو این حالت اگر به غیر از عدد 1 و 2 کاربر عدد دیگری را انتخاب کنه "مرد" انتخاب می شه ولی تا 10 تا کاربرد داره اگه مشکلی داره دوستان کمک کنند

Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
Dim i As String
i = ComboBox1.Text
Select Case i

Case 2
ComboBox1.SelectedIndex = 1
ComboBox1.SelectAll()

Case "زن"
ComboBox1.SelectedIndex = 1
ComboBox1.SelectAll()

Case Else
ComboBox1.SelectedIndex = 0
ComboBox1.SelectAll()
End Select
End Sub

فرید نجفلو
چهارشنبه 03 خرداد 1391, 19:18 عصر
دوست عزیز
کاربر کد من به این صورت هست که شما عدد کزینه رو وارد(مثلا 25) و کلید اینتر رو می زنید و مورد 25 ام در لیست انتخاب می شه

در مورد روش عجیب شما هم من تو همون پست اول گفتم مورد چیه یعنی شما با این کدی که نوشتید نمی تونید اعداد بیش از یک رقم رو وارد کنید چون به محض ورود عدد اول ، متن (که شامل عددبود ) تغییر می کنه