View Full Version : اشکال در پیدا کردن ( آ ) در ComboBox
nokhodsiah2001
دوشنبه 06 آبان 1387, 14:19 عصر
اشکال در پیدا کردن ( آ ) در ComboBox
سلام
من یک ComboBox دارم که آیتمهاش فارسی و هم اینکه خیلی زیاد هستن و برای اینکه کار برای کاربر ساده تر بشه یک نوعی ساده اش کردم یعنی مثلاً وقتی حرف " م " رو کاربر وارد کنه فقط آیتمهایی که " م " دارن لیست میشن و اگر " مس" تایپ کنه مواردی که با " مس " شروع میشه تو ComboBox لیست میشه
برای این کار از رویداد Keydown استفاده کردم تا اینجاش که مشکلی نداشتم حال مشکل اینجاست که نمی دونم ... " آ " .... رو چه جوری چک کنم چون Shift +H رو نمی دونم چه جوری بهش برسم
nokhodsiah2001
دوشنبه 06 آبان 1387, 14:30 عصر
این هم روش کارم ببینین چیزی می تونین اضافه کنین اینو بگم که کار میکنه ولی کمی نیاز به دستکاری داره اولش هم باید ComboBox با اطلاعات پر بشه
حالا کسی هست نظری بده یا نه
Dim ArCombo(100) As String
Dim ArComboSelect(100) As String
Dim i As Int16
Private StrText As String
Private StrChar As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Cu As Int16
i = ComboBox1.Items.Count
ReDim ArCombo(ComboBox1.Items.Count)
Cu = 0
Do While Cu < i
ArCombo(Cu) = ComboBox1.Items.Item(Cu)
Cu = Cu + 1
Loop
End Sub
Private Sub ComboBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyDown
'Dim i As Int16
Dim Cu As Int16
Dim CharCu As Int16
Dim StrItem As String
'Dim keydown As System.Windows.Forms.KeyEventArgs
On Error GoTo exi
Lbl_Name.Visible = True
Lbl_Name.BringToFront()
'MsgBox("e.KeyCode = " & e.KeyCode)
'keydown = e
If e.KeyCode = 153 Then
MsgBox("e.KeyCode = " & e.KeyCode)
StrChar = "آ"
GoTo edameh
End If
Select Case e.KeyCode
Case Keys.H
StrChar = "ا"
Case Keys.F
StrChar = "ب"
Case 192
StrChar = "پ"
Case Keys.J
StrChar = "ت"
Case Keys.E
StrChar = "ث"
Case 219
StrChar = "ج"
Case 221
StrChar = "چ"
Case Keys.P
StrChar = "ح"
Case Keys.O
StrChar = "خ"
Case Keys.N
StrChar = "د"
Case Keys.B
StrChar = "ذ"
Case Keys.V
StrChar = "ر"
Case Keys.C
StrChar = "ز"
Case 220
StrChar = "ژ"
Case Keys.S
StrChar = "س"
Case Keys.A
StrChar = "ش"
Case Keys.W
StrChar = "ص"
Case Keys.Q
StrChar = "ض"
Case Keys.X
StrChar = "ط"
Case Keys.Z
StrChar = "ظ"
Case Keys.U
StrChar = "ع"
Case Keys.Y
StrChar = "غ"
Case Keys.T
StrChar = "ف"
Case Keys.R
StrChar = "ق"
Case Keys.A
StrChar = "ك"
Case Keys.A
StrChar = "گ"
Case Keys.G
StrChar = "ل"
Case Keys.L
StrChar = "م"
Case Keys.K
StrChar = "ن"
Case 188
StrChar = "و"
Case Keys.I
StrChar = "ه"
Case Keys.D
StrChar = "ي"
Case Keys.Shift + Keys.H
StrChar = "آ"
End Select
edameh:
If StrChar <> Nothing Then
ComboBox1.Items.Clear()
StrText = StrText + StrChar
CharCu = StrText.Length
Cu = 0
Do While Cu < i
StrItem = ArCombo(Cu)
If Microsoft.VisualBasic.Left(StrItem, CharCu) = StrText Then
ComboBox1.Items.Add(StrItem)
ComboBox1.DroppedDown = True
End If
Cu = Cu + 1
Loop
End If
'///////////// backspace
If e.KeyCode = 8 Then
ComboBox1.Items.Clear()
If StrText = Nothing Then
Me.Close()
Call Form2.Button1_Click(Nothing, Nothing)
End If
StrText = Microsoft.VisualBasic.Left(StrText, StrText.Length - 1)
CharCu = StrText.Length
Cu = 0
Do While Cu < i
StrItem = ArCombo(Cu)
If Microsoft.VisualBasic.Left(StrItem, CharCu) = StrText Then
ComboBox1.Items.Add(StrItem)
ComboBox1.DroppedDown = True
ComboBox1.Text = StrText
End If
Cu = Cu + 1
Loop
End If
If e.KeyCode = Keys.Escape Then
Cu = 0
ComboBox1.Items.Clear()
Do While Cu < i
ComboBox1.Items.Add(ArCombo(Cu))
Cu = Cu + 1
Loop
ComboBox1.DroppedDown = True
End If
If e.KeyCode <> Nothing Then
End If
If e.KeyCode = Keys.Enter Then
'آیتم انتخابی را به برنامه پاس دهد
Exit Sub
End If
End Sub
nokhodsiah2001
دوشنبه 06 آبان 1387, 16:03 عصر
اگر دوستان دقت کنید توو کد گفتم که اگر
Case Keys.P
"ح" = StrChar
ولی برای " آ " نمی دونم چی باید بگم
nokhodsiah2001
سه شنبه 07 آبان 1387, 14:21 عصر
کسی نیست جواب بده؟
eli_joon
چهارشنبه 08 آبان 1387, 10:15 صبح
سلام دوست من
اصلا نیازی به این کارا نیست. اگه شما در vb2005 برنامه نوشته باشید میبینید که به طور اتوماتیک combobox این کارو براتون انجام میده
sepehr.net
چهارشنبه 08 آبان 1387, 21:39 عصر
سلام حالا اگه شما میخواین از این روش برین باید کد اسکی کاراکتر ها رو بنویسید نه معادل انگلیسی شون
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.