A.Noor
پنج شنبه 03 اردیبهشت 1383, 11:33 صبح
با سلام
در Vb6 اگر یک TextBox و یک ListBox داشتیم میتوانستیم با کمک تابع SendMessageA همراه با تایپ عبارت در TextBox ایندکس لیست روی آیتم مشابه قرار گیرد و به اینصورت یک جستجوی سریع روی لیست انجام دهیم :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const LB_FINDSTRING = &H18F
Private Sub Text1_Change()
List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
End Sub
معادل این دستورات در Vb.net چیست ؟
من از این کدها استفاده کردم :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As System.IntPtr, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Integer
Const LB_FINDSTRING = &H18F
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
ListBox1.SelectedIndex = SendMessage(ListBox1.Handle, LB_FINDSTRING, -1, TextBox1.Text.ToString)
End Sub
ولی خطای زیر را میدهد :
An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in system.windows.forms.dll
Additional information: Specified argument was out of the range of valid values.
در Vb6 اگر یک TextBox و یک ListBox داشتیم میتوانستیم با کمک تابع SendMessageA همراه با تایپ عبارت در TextBox ایندکس لیست روی آیتم مشابه قرار گیرد و به اینصورت یک جستجوی سریع روی لیست انجام دهیم :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const LB_FINDSTRING = &H18F
Private Sub Text1_Change()
List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
End Sub
معادل این دستورات در Vb.net چیست ؟
من از این کدها استفاده کردم :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As System.IntPtr, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Integer
Const LB_FINDSTRING = &H18F
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
ListBox1.SelectedIndex = SendMessage(ListBox1.Handle, LB_FINDSTRING, -1, TextBox1.Text.ToString)
End Sub
ولی خطای زیر را میدهد :
An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in system.windows.forms.dll
Additional information: Specified argument was out of the range of valid values.