تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] البحث عن كلمات داخل Textbox
#1
Exclamation 
باختصار لدى textbox كبير يكتب بداخله نص كبير
عند الضغط على زر find تفتح هذه النافذه الموجودة فى الصورة والخاصه بالبحث:


***
بالنسبة لخاصية find once تعمل جيداً لإيجاد نتيجة واحدة مطابقة
***
أما find next فعند الضغط عليها لا ينتقل للنتيجة المطابقة التالية مباشرة
وإنما يقوم بعمل select للنتيجة المطابقة الأولى حتى أضغط مره أخرى فينتقل للتالية
مثلاً عندما أبحث عن كلمة how باستخدام زر find once ويجده ويحدده كما فى الصوره:



ثم أضغط على زر find next ليجد الكلمة المقابلة يستمر البرنامج فى تحديد نفس الكلمة
ولا ينتقل للتالية حتى أضغط على find next مرة أخرى ليحدد التالية كما فى الصورة:



لم اتمكن من تعديل كود البرنامج ليحقق هذا
***
وبالنسبة لخاصية find previous و find all لم أتمكن من التطبيق فى الكود

كود نافذة البحث فى البرنامج:
كود :
Public Class Form2
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       'button called (Find Once)
       Dim a As String
       Dim b As String
       a = TextBox1.Text
       b = InStr(Form1.TextBox1.Text, a)
       If b Then
           Form1.TextBox1.Focus()
           Form1.TextBox1.SelectionStart = b - 1
           Form1.TextBox1.SelectionLength = Len(a)
       Else : MsgBox("No Text Found!")
       End If
   End Sub
   Private TargetPosition As Integer
   Private Sub FindText(ByVal start_at As Integer)
       Dim pos As Integer
       Dim target As String = TextBox1.Text
       Dim text As String = Form1.TextBox1.Text

       pos = InStr(start_at, text, target)
       If pos > 0 Then
           ' We found it.
           TargetPosition = pos
           Form1.TextBox1.SelectionStart = TargetPosition - 1
           Form1.TextBox1.SelectionLength = Len(target)
           Form1.TextBox1.Focus()
       Else
           ' We did not find it.
           MsgBox("Not found.")
           Form1.TextBox1.Focus()
       End If
   End Sub
   Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
       'button called (Find Next)
       FindText(TargetPosition + 1)
   End Sub
   Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
       'button called (Find Previous)
       FindText(TargetPosition - 2)
   End Sub
   Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
       'button called (Find All)
   End Sub
   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       Me.Close()
   End Sub
End Class
الرد }}}
تم الشكر بواسطة:
#2
نفس سؤالي وقالوا استخدم Ritchtextbox لانها متقدمة.
الرد }}}
تم الشكر بواسطة:
#3
استبدلته ب richtextbox ولكن نفس النتيجة
لأن الكود نفسه بحاجه إلى بعض التعديلات
هل من اقتراحات؟؟
الرد }}}
تم الشكر بواسطة:
#4
شوف سؤالي هنا والجواب هنا
دائما انظر للمواضيع المتشابهة اسفل الموضوع يساعدك بالحصول على اجابة سريعة.
الرد }}}
تم الشكر بواسطة: Doctor GME , waelalmsry75
#5
المشكلة اخى سعود أن هذا الكود يتطلب تحويل textbox
المكتوب فيه النص الكبير المراد البحث فيه إلى richtextbox
وهذا لا يمكننى فعله لأن كود برنامجى أصبح كبير جداً ولا يمكننى تعديله
ولهذا أبحث عن كود يناسب textbox ويقوم بالمهمة
الرد }}}
تم الشكر بواسطة:
#6
طيب مارايك بهذا
http://www.vbforfree.com/how-to-searchfi...ing-vbnet/
الرد }}}
تم الشكر بواسطة: Doctor GME , Doctor GME
#7
أتمني إن الكود التالي سوف يعطيك فكرة جيدة عن كيفية البحث عن كلمة في RichTextBox

افتح مشروع و أضف الي الفورم RichTextBox و باتون ثم اكتب الكود بالشكل التالي
الكود سوف يجد لك الكلمة التي تبحث عنها
وهنا انا قمت بالبحث عن كلمة vb4arab

PHP كود :
Public Class Form1

    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        Dim s 
As String "vb4arab demo, The fox knows to jump but how, how he jump?, and how he learned to jumb bla bla bla bla, vb4arab demo"
 
       RichTextBox1.Text s
    End Sub

    Private 
Function TryFindString(stringTofind As StringhighlightColor As ColormatchCase As BooleanmatchWholeWord As Boolean) As Boolean

        Me
.RichTextBox1.SelectAll()
 
       Me.RichTextBox1.SelectionBackColor Color.White

        Dim startIndex 
As Integer 0
        Dim searchOption 
As RichTextBoxFinds Nothing
        If matchCase AndAlso matchWholeWord Then
            searchOption 
RichTextBoxFinds.MatchCase Or RichTextBoxFinds.WholeWord
        ElseIf matchCase Then
            searchOption 
RichTextBoxFinds.MatchCase
        ElseIf matchWholeWord Then
            searchOption 
RichTextBoxFinds.WholeWord
        Else
            searchOption 
RichTextBoxFinds.None
        End 
If
 
       Dim found As Boolean False
        Dim index 
As Integer = -1
        While 
(Me.FindIndex(Me.RichTextBox1.Find(stringTofindstartIndexsearchOption), index)) > -1
            found 
True
            Me
.RichTextBox1.SelectionBackColor highlightColor
            startIndex 
index 1
        End 
While
 
       Return found
    End 
Function

 
   Private Function FindIndex(value As IntegerByRef index As Integer) As Integer
        index 
value
        Return value
    End 
Function

 
   Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        Dim search 
As String "vb4arab"
 
       Dim found As Boolean TryFindString(searchSystemColors.MenuHighlightTrueTrue)
 
       If Not found Then
            Dim errorString 
As String String.Format("Can't find the word ""{0}"", try another word"search)
 
           MessageBox.Show(errorString"Error"MessageBoxButtons.OKMessageBoxIcon.Error)
 
       End If
 
   End Sub

End 
Class 
الرد }}}
تم الشكر بواسطة: Doctor GME , Doctor GME , waelalmsry75 , waelalmsry75
#8
أخى سعود
حاولت التعديل فيه ولم أنجح إلا فى خاصية find once
أما الباقى بحاجة إلا مساعدة على تعديل الكود

كود :
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       'button called (Find Once)
       SearchText(Form1.TextBox1.Text)
   End Sub
   Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
       'button called (Find Next)

   End Sub
   Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
       'button called (Find Previous)

   End Sub
   Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
       'button called (Find All)

   End Sub
   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       Me.Close()
   End Sub
   Public Overloads Function SearchText(ByVal textToFind As String) As Integer
       'Contains the return value of the search.
       'if it returns -1, then a match was not found.

       textToFind = TextBox1.Text
       Dim nomatchCase As Boolean = False
       Dim highlightText As Boolean = True
       Dim startPosition As Integer = 0
       Dim endPosition As Integer = 0
       Dim i As Integer

       If endPosition < 1 Then

           If Not nomatchCase Then

               textToFind = textToFind.ToLower

               Dim temp As String = Form1.TextBox1.Text.ToLower

               i = temp.IndexOf(textToFind, startPosition, Me.Text.Length)

           Else

               i = Form1.TextBox1.Text.IndexOf(textToFind, startPosition, Me.Text.Length)

           End If

       Else
           If nomatchCase = False Then

               textToFind = textToFind.ToLower

               Dim temp As String = Form1.TextBox1.Text.ToLower

               i = temp.IndexOf(textToFind, startPosition, endPosition)

           Else
               i = Form1.TextBox1.Text.IndexOf(textToFind, startPosition, endPosition)
           End If
       End If
       If i > -1 Then

           If highlightText Then

               Form1.TextBox1.Focus()

               Form1.TextBox1.SelectionStart = i

               Form1.TextBox1.SelectionLength = textToFind.Length

           End If
       End If
       '
       'Returns the position the text was found at
       'otherwise it will report -1, which means that the search string was not found.
       Return i

   End Function
End Class

(15-09-16, 02:17 AM)silverlight كتب : أتمني إن الكود التالي سوف يعطيك فكرة جيدة عن كيفية البحث عن كلمة في RichTextBox

افتح مشروع و أضف الي الفورم RichTextBox و باتون ثم اكتب الكود بالشكل التالي
الكود سوف يجد لك الكلمة التي تبحث عنها
وهنا انا قمت بالبحث عن كلمة vb4arab

PHP كود :
Public Class Form1

    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        Dim s 
As String "vb4arab demo, The fox knows to jump but how, how he jump?, and how he learned to jumb bla bla bla bla, vb4arab demo"
 
       RichTextBox1.Text s
    End Sub

    Private 
Function TryFindString(stringTofind As StringhighlightColor As ColormatchCase As BooleanmatchWholeWord As Boolean) As Boolean

        Me
.RichTextBox1.SelectAll()
 
       Me.RichTextBox1.SelectionBackColor Color.White

        Dim startIndex 
As Integer 0
        Dim searchOption 
As RichTextBoxFinds Nothing
        If matchCase AndAlso matchWholeWord Then
            searchOption 
RichTextBoxFinds.MatchCase Or RichTextBoxFinds.WholeWord
        ElseIf matchCase Then
            searchOption 
RichTextBoxFinds.MatchCase
        ElseIf matchWholeWord Then
            searchOption 
RichTextBoxFinds.WholeWord
        Else
            searchOption 
RichTextBoxFinds.None
        End 
If
 
       Dim found As Boolean False
        Dim index 
As Integer = -1
        While 
(Me.FindIndex(Me.RichTextBox1.Find(stringTofindstartIndexsearchOption), index)) > -1
            found 
True
            Me
.RichTextBox1.SelectionBackColor highlightColor
            startIndex 
index 1
        End 
While
 
       Return found
    End 
Function

 
   Private Function FindIndex(value As IntegerByRef index As Integer) As Integer
        index 
value
        Return value
    End 
Function

 
   Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        Dim search 
As String "vb4arab"
 
       Dim found As Boolean TryFindString(searchSystemColors.MenuHighlightTrueTrue)
 
       If Not found Then
            Dim errorString 
As String String.Format("Can't find the word ""{0}"", try another word"search)
 
           MessageBox.Show(errorString"Error"MessageBoxButtons.OKMessageBoxIcon.Error)
 
       End If
 
   End Sub

End 
Class 

أخى العزيز كما قلت للأخ سعود فى الردود السابقة
برنامجى به textbox ولا أستطيع تغييره ل richtextbox لأن الكود أصبح كبير جداً
ولا يمكننى تغييره فالأسهل بكثير هو تعديل كود البحث ليتماشى مع textbox
الرد }}}
تم الشكر بواسطة:
#9
تستطيع ببساطة شديدة
احذف textbox1 مثلا
واضف RitchTextBox وغير اسمه الى Textbox1
فقط
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 اللهم اغْفِرْ لِلمؤمنين والمؤمنات والمسلمين والمسلمات الأحياء منهم والأموات
الرد }}}
تم الشكر بواسطة:
#10
لم تصلح أخى أبو عمر هذه الطريقة
الكود كما قلت به أجزاء لا تطبق إلا على textbox فقط
وبعد أداء هذه الطريقة يفشل البرنامج فى debug بسبب هذا
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] البحث باستخدام CheckedListBox لتكون نتيجة التحديد شرط لجملة الاستعلام ahmedramzyaish 0 116 19-02-24, 03:44 AM
آخر رد: ahmedramzyaish
  [VB.NET] مشكلة ظهور textbox بعد حذفه من الفورم مبرمج صغير 1 1 221 27-01-24, 02:04 AM
آخر رد: مبرمج صغير 1
  البحث بالهوية annagui 2 315 25-01-24, 01:00 PM
آخر رد: annagui
  التحقق من خلال محتوى خلية عن طريق textbox صالح عبدالله 2 222 24-01-24, 12:54 PM
آخر رد: صالح عبدالله
  [VB.NET] استدعاء بيانات في TextBox بناء على combobox loay775 2 264 18-01-24, 05:07 PM
آخر رد: loay775
  [سؤال] كيفية انشاء فورم داخل مشروعى عاصم النجار 2 305 05-01-24, 12:36 AM
آخر رد: HALIM ELEULMA
  حماية عمود داخل ورقة الاكسل العيدروس 3 190 05-01-24, 12:21 AM
آخر رد: HALIM ELEULMA
  إدخال معادلة رياضية في textBox وبرمجة حلها؟ الخير19 3 299 03-01-24, 04:19 PM
آخر رد: الخير19
  [VB.NET] ما الخطأ فى هذا الكود - كود البحث المتعدد Ashraf Elafify 7 464 27-12-23, 10:50 PM
آخر رد: Ashraf Elafify
  [كود] البحث Abdellatif 2 208 27-12-23, 03:15 PM
آخر رد: Abdellatif

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم