PDA

View Full Version : مشکل در زمینه تکمیل شدن خودکار متن درون ComboBox



hanann
یک شنبه 29 خرداد 1390, 15:58 عصر
سلام

این کد مربوط به تکمیل شدن خودکار متن درون ComboBox در vb.net است اما من متوجه نشدم

ممنون میشم توضیح کامل بدین

Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
If Char.IsControl(e.KeyChar) Then Return
With Me.ComboBox1
Dim t As String = .Text.Substring(0, .SelectionStart) & e.KeyChar
Dim index As Integer = .FindStringExact(t)
If index > -1 Then
.SelectedIndex = index
.SelectionStart = t.Length
.SelectionLength = .Text.Length - .SelectionStart
e.Handled = True
End If
End With
End Sub

Hossis
یک شنبه 29 خرداد 1390, 19:12 عصر
راستش من هم متوجه نشدم
پرشدن خودکار کامبو باکس نیاز به کد نویسی ندارد و می توانید از طریق طراحی آن را تنظیم کنید
دقیقا نمی دانم منظورتان چیست؟

Hossis
یک شنبه 29 خرداد 1390, 19:16 عصر
این هم کد API برای این منظور است که در دات نت دیگر نیازی نیست
Private Const SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
Private Const SHACF_AUTOAPPEND_FORCE_ON = &H40000000
Private Const SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
Private Const SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
Private Const SHACF_DEFAULT = &H0
Private Const SHACF_FILESYSTEM = &H1
Private Const SHACF_URLHISTORY = &H2
Private Const SHACF_URLMRU = &H4
Private Const SHACF_USETAB = &H8
Private Const SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
Private Declare Sub SHAutoComplete Lib "shlwapi.dll" (ByVal hwndEdit As Long, ByVal dwFlags As Long)
Private Sub Form_Load()
SHAutoComplete Text1.hwnd, SHACF_DEFAULT
End Sub

pouyansaraf
دوشنبه 30 خرداد 1390, 17:19 عصر
این هم کد API برای این منظور است که در دات نت دیگر نیازی نیست
Private Const SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
Private Const SHACF_AUTOAPPEND_FORCE_ON = &H40000000
Private Const SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
Private Const SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
Private Const SHACF_DEFAULT = &H0
Private Const SHACF_FILESYSTEM = &H1
Private Const SHACF_URLHISTORY = &H2
Private Const SHACF_URLMRU = &H4
Private Const SHACF_USETAB = &H8
Private Const SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
Private Declare Sub SHAutoComplete Lib "shlwapi.dll" (ByVal hwndEdit As Long, ByVal dwFlags As Long)
Private Sub Form_Load()
SHAutoComplete Text1.hwnd, SHACF_DEFAULT
End Sub


میشه بیشتر توضیح بدید و چگونه باید از آن استفاده کرد؟

Hossis
دوشنبه 30 خرداد 1390, 21:54 عصر
اصلا توی دات نت نیازی به این کد و مشکلات نیست
من نمی دونم شما چه اصراری بر این کد دارید
البته با عرض پوزش این کد برای تکست باکس کار می کنه و روال فرم رو به صورت زیر تغییر دهید
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SHAutoComplete(TextBox1.Handle.ToInt64, SHACF_URLALL)

End Sub

hanann
سه شنبه 31 خرداد 1390, 11:39 صبح
سلام

ببخشید دیر جواب دادم وممنون بایت پاسخ ها تون

راستش من دارم شروع میکنم از روی کتاب vb.net را یاد گرفتن و این کد به عنوان ترفند ذکر شده

من متوجه کار هر خط این کد نویسی نشدم

دوست دارم بدونم چکار میکنه

مثلا این خط

Dim index As Integer = .FindStringExact(t)

نمی دونم کار. FindStringExact(t) چیه؟

راجب تک تک خطوط ممنون میشک توضیح بدید

کلا میخوام این توابع را بفهمم

ممنون میشم راهنمایی کنید.

Hossis
سه شنبه 31 خرداد 1390, 19:54 عصر
findString آيتمی را جستجو می کند که با مقدار وارد شده شروع شده باشد
FindStringExact آیتمی را جستجو می کند که مقدار وارد شده را در خود داشته باشد اعم از این که مقدار ورودی اول آن آیتم باشد یا وسط یا آخر آن.