I am using VB and trying to select a portion of the text in a textbox of a separate form. However, I can't seem to find a good way to access the textbox from the other form, although the textbox is public (I am new to VB).
Currently, I'm trying to do this by calling a function located in the form (the form with the textbox), and then focusing on the textbox and selecting/highlighting the text. But it still doesn't work:
Public Sub GetFindLoc(ByVal lngStart As Long, ByVal intLen As Integer)
Hmm. This was more fiddly than I thought. You need to pass a reference to the other form:
Public Class frmNotes 'This is the main form 'This form has a textbox named txtNotes and a button called btnShowFind 'txtNotes has .MultiLine=True Private mfrmFind As frmFind Private Sub btnShowFind_Click(sender As Object, e As EventArgs) Handles btnShowFind.Click If mfrmFind Is Nothing OrElse mfrmFind.IsDisposed Then mfrmFind = New frmFind(Me) mfrmFind.Show() Else mfrmFind.BringToFront() End If End Sub End Class
Public Class frmFind 'This form has a textbox called txtFind and a button called btnFind Private mfrmParent As frmNotes Sub New(parent As frmNotes) ' This call is required by the designer. InitializeComponent() ' Add any initialization after the InitializeComponent() call. mfrmParent = parent End Sub Private Sub btnFind_Click(sender As Object, e As EventArgs) Handles btnFind.Click If txtFind.Text = "" Then MsgBox("Please enter text to find", MsgBoxStyle.Exclamation) Exit Sub End If Dim intSearchBegin As Integer = mfrmParent.txtNotes.SelectionStart + 1 Dim intStart As Integer = mfrmParent.txtNotes.Text.IndexOf(txtFind.Text, intSearchBegin) If intStart > -1 Then mfrmParent.txtNotes.Select(intStart, txtFind.Text.Length) mfrmParent.txtNotes.Focus() mfrmParent.BringToFront() Else mfrmParent.txtNotes.Select(0, 0) MsgBox("No more matches") End If End Sub End Class