تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] سؤال عن AutoComplete
#2
اخي ابو انس اعتقد ان الحل الذي تريده هو في استخدام كومبوبوكس تملآ عناصره  عن طريق استخدام regex 
ليبحث عن اقرب التطابقات في نص تكستبوكس او عناصر داتاجريد فيو  باستخدام الادخال الذي قمت به 

في المثال الذي عملته استخدمت 2 تكستبوكس الاول rtxt وهو الذي استخدم فيه الاكمال التلقائي
والثاني rtxt2 وهو يحوي النص الذي سيعرض الاكمال التلقائي مقترحات الاكمال بناء على النص الموجود فيه

شاهد الفيديو 



باختصار جرب الكود التالي

كود :
Imports System.Text.RegularExpressions
Imports System.Runtime.InteropServices

Public Class Form1
    Dim autoComp As New ComboBox

    <DllImport("user32.dll")> _
    Private Shared Function GetCaretPos(ByRef lpPoint As Point) As Boolean
    End Function

    Public Function GetCorrectCaretPos() As Point
        Dim pt As Point = Point.Empty
        If GetCaretPos(pt) Then
            Return pt
        Else
            Return Point.Empty
        End If
    End Function

    Dim curWord As String
    Dim spaceKeyHitCounter As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Controls.Add(autoComp)
    End Sub

    Private Sub rtxt_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles rtxt.KeyDown
        If e.KeyCode = Keys.Space Then
            If spaceKeyHitCounter < 1 Then
                spaceKeyHitCounter += 1
            Else
                spaceKeyHitCounter = 0
                curWord = ""
                autoComp.Hide()
            End If
        ElseIf e.Modifiers = Keys.Control And e.KeyCode = Keys.V Then
            My.Computer.Clipboard.Clear()
            curWord = curWord.Remove(curWord.Length - 1)
            rtxt.SelectionStart -= Len(curWord)
            rtxt.SelectionLength = curWord.Length '- 1
            rtxt.SelectedText = autoComp.Text
            spaceKeyHitCounter = 0
            curWord = ""
            autoComp.Hide()
        ElseIf e.KeyCode = Keys.Back Then
            Try
                curWord = curWord.Remove(curWord.Length - 1)
            Catch ex As Exception

            End Try
        Else
            If CurCharPos = 0 Then
                spaceKeyHitCounter = 1
            End If
            If e.KeyCode = Keys.Enter Then
                If CurCharPos = 0 Then
                    spaceKeyHitCounter = 1
                End If
                curWord = ""
            End If
            curWord += Chr(e.KeyCode)
            curWord = curWord.Trim()
            autoComp.Left = GetCorrectCaretPos().X
            autoComp.Top = GetCorrectCaretPos().Y + autoComp.Height - 5
            autoComp.Show()
            autoComp.BringToFront()
        End If
    End Sub

    Dim CurCharPos As Integer
    Private Sub rtxt_TextChanged(sender As Object, e As System.EventArgs) Handles rtxt.TextChanged
        CurCharPos = rtxt.GetPositionFromCharIndex(rtxt.GetFirstCharIndexFromLine(rtxt.GetLineFromCharIndex(rtxt.SelectionStart))).X
        Dim col As MatchCollection = Regex.Matches(rtxt2.Text, "\b(\w+)\b", RegexOptions.IgnoreCase Or RegexOptions.IgnorePatternWhitespace)
        autoComp.Items.Clear()
        For Each match As Match In col
            If Regex.IsMatch(match.Value, curWord, RegexOptions.IgnoreCase) Then
                If Not autoComp.Items.Contains(match.Value) Then
                    autoComp.Items.Add(match.Value)
                End If
                autoComp.SelectedIndex = 0
                'autoComp.SelectAll()
            End If
        Next
    End Sub
End Class

وللعلم فان الكود مجرد محاولة مني ولا اجزم انه هو بالضبط ماتطلبه 
لكنه على الاقل قد يكون نقطة بداية لما تريد
جربه اولا في مشروع اختبار لانه لابد ان تحتاج الى تعديل هنا او هناك في الكود

ملاحظة autoComp هو اسم الكومبوبوكس

الرد }}}
تم الشكر بواسطة: ابو انس , ابراهيم ايبو , سعود


الردود في هذا الموضوع
سؤال عن AutoComplete - بواسطة ابو انس - 15-12-21, 07:49 PM
RE: سؤال عن AutoComplete - بواسطة معاند الحظ - 16-12-21, 07:48 AM
RE: سؤال عن AutoComplete - بواسطة ابو انس - 16-12-21, 11:10 PM
RE: سؤال عن AutoComplete - بواسطة معاند الحظ - 16-12-21, 11:55 PM
RE: سؤال عن AutoComplete - بواسطة ابو انس - 17-12-21, 12:25 AM
RE: سؤال عن AutoComplete - بواسطة معاند الحظ - 17-12-21, 01:00 AM
RE: سؤال عن AutoComplete - بواسطة ابراهيم ايبو - 17-12-21, 01:09 AM
RE: سؤال عن AutoComplete - بواسطة ابو انس - 17-12-21, 01:25 AM
RE: سؤال عن AutoComplete - بواسطة معاند الحظ - 17-12-21, 01:39 AM
RE: سؤال عن AutoComplete - بواسطة ابو انس - 17-12-21, 02:06 AM
RE: سؤال عن AutoComplete - بواسطة سعود - 17-12-21, 02:16 AM
RE: سؤال عن AutoComplete - بواسطة سعود - 17-12-21, 01:44 AM
RE: سؤال عن AutoComplete - بواسطة ابو انس - 17-12-21, 02:55 AM
RE: سؤال عن AutoComplete - بواسطة معاند الحظ - 17-12-21, 06:51 AM
RE: سؤال عن AutoComplete - بواسطة ابو انس - 17-12-21, 10:41 PM
RE: سؤال عن AutoComplete - بواسطة معاند الحظ - 25-12-21, 08:46 AM
RE: سؤال عن AutoComplete - بواسطة alfaiz678 - 25-12-21, 07:24 PM
RE: سؤال عن AutoComplete - بواسطة معاند الحظ - 25-12-21, 07:27 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سؤال عن الاسمبلي و النيم سبيس justforit 0 109 07-12-25, 12:28 AM
آخر رد: justforit
  فائدة بخصوص التعامل مع علامات التنصيص مع {سؤال} justforit 4 292 02-11-25, 11:19 PM
آخر رد: justforit
  [نقاش] سؤال MetoDas 2 1,493 20-04-25, 10:21 PM
آخر رد: Kamil
  [سؤال] سؤال ترددت قبل نشرة:طابعة الباركود لماذا تطبع أكثر من ليبل فارغ قبل السليم dr.programming 1 514 20-04-25, 09:26 PM
آخر رد: Kamil
  سؤال لو سمحتم احبتى فى الله خالد كامل1 4 811 09-02-25, 12:02 AM
آخر رد: princelovelorn
  سؤال واستفسار خالد كامل1 1 405 04-02-25, 09:31 PM
آخر رد: aliday03
  سؤال فى تقرير كريستال خالد كامل1 0 398 04-02-25, 05:50 AM
آخر رد: خالد كامل1
Question [VB.NET] هناك سؤال يهم كل مبرمج الماذا برنامجك يظهر على بعض الشاشات اكثر دقه بشكل مصغر ومشوه Microformt 0 449 01-02-25, 03:48 PM
آخر رد: Microformt
  [سؤال] سؤال في الكونسول justforit 1 370 21-12-24, 02:57 PM
آخر رد: aljzazy
  سؤال عن طريقة التعامل مع الفاصلة العشرية المتألق9 2 524 28-09-24, 04:45 PM
آخر رد: المتألق9

التنقل السريع :


يقوم بقرائة الموضوع: