实现记事本查找出现的问题
'获得主窗体的引用
Dim ff As New FrmMain()
ff = DirectCast(Me.Owner, FrmMain)
Dim findText As Integer = 0
Try
'向下查找
If RadioButton1.Checked Then
findText = ff.RichTextBox1.SelectionStart + ff.RichTextBox1.SelectionLength
'从光标处开始查找
If (InlineAssignHelper(findText, ff.RichTextBox1.Text.IndexOf(TextBox1.Text, findText))) = -1 Then
MessageBox.Show("找不到""" & Convert.ToString(Me.TextBox1.Text) & """", "myNotepad", MessageBoxButtons.OK, MessageBoxIcon.Information)
'搜索到达终点
findText = ff.RichTextBox1.Text.Length
Else
'选中找到的文本,使其明显
ff.RichTextBox1.[Select](findText, TextBox1.Text.Length)
ff.RichTextBox1.Focus()
findText += TextBox1.Text.Length
End If
'向上查找
ElseIf RadioButton2.Checked Then
findText = ff.RichTextBox1.SelectionStart + ff.RichTextBox1.SelectionLength
'从光标处开始查找
If findText >= 0 AndAlso findText <= ff.RichTextBox1.Text.Length Then
If (InlineAssignHelper(findText, ff.RichTextBox1.Text.LastIndexOf(TextBox1.Text, findText))) = -1 Then
MessageBox.Show("找不到""" & Convert.ToString(Me.TextBox1.Text) & """", "myNotepad", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
'选中找到的文本,使其明显
ff.RichTextBox1.[Select](findText, TextBox1.Text.Length)
ff.RichTextBox1.Focus()
findText += TextBox1.Text.Length
End If
Else
MessageBox.Show("找不到""" & Convert.ToString(Me.TextBox1.Text) & """", "myNotepad", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
target = value
Return value
End Function
每次代码执行到 findText = ff.RichTextBox1.SelectionStart + ff.RichTextBox1.SelectionLength 时,就直接跳到MessageBox.Show(ex.Message)这个地方,然后提示未将对象引用设置到对象的实例。怎么回事?
[解决办法]
关于ff为什么要引用转换的me.owner而不是直接使用主窗体比较疑惑,也许楼主另有用途,不过出错原因可能正在此处。