PDA

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 عصر
سلام حالا اگه شما میخواین از این روش برین باید کد اسکی کاراکتر ها رو بنویسید نه معادل انگلیسی شون