在我的应用程序中,在打开某个表单时动态创建RichTextBox
。目前,点击该框会打开OpenFileDialog
,用户在其中选择文件,然后将文件位置放入RichTextBox
。
我的最终用户昨天告诉我,他反而想要以下内容:
RichTextBox
应该在资源管理器中打开指定的文件ContextMenuStrip
,条带中的一个选项为"选择文件"。我修改后的代码包含在以下Gists中:
我的openFileDialog子,用于处理.Click
ToolStripMenuItem
事件
Sub openFileDialog(ByVal sender As System.Windows.Forms.ToolStripMenuItem, ByVal e As System.EventArgs)
Dim myOpenFileDialog As New OpenFileDialog()
If Not sender.GetCurrentParent().Parent.Text = "" Then
myOpenFileDialog.InitialDirectory = sender.GetCurrentParent().Parent.Text
Else
myOpenFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
End If
myOpenFileDialog.Filter = "All files (*.*)|*.*"
myOpenFileDialog.FilterIndex = 1
myOpenFileDialog.RestoreDirectory = True
If myOpenFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
sender.GetCurrentParent().Parent.Text = myOpenFileDialog.FileName
End If
End Sub
我的fileControlRightClicked子,用于处理RichTextBox
Sub fileControlRightClicked(ByVal sender As System.Windows.Forms.RichTextBox, ByVal e As System.Windows.Forms.MouseEventArgs)
If e.Button <> Windows.Forms.MouseButtons.Right Then Return
Dim cms = New ContextMenuStrip
'cms.Parent = sender
Dim item1 = cms.Items.Add("Select File")
item1.Tag = 1
AddHandler item1.Click, AddressOf openFileDialog
cms.Show(sender, e.Location)
End Sub
除了这两段代码,我只能想到的相关代码是
AddHandler .MouseUp, AddressOf fileControlRightClicked
宣布RichTextBox
时使用。
如何引用所点击的RichTextBox
的特定实例?
显然,使用sender.GetCurrentParent().Parent
不起作用,sender.GetCurrentParent.SourceControl
也不起作用。 (这些可以在上面的openFileDialog要点中看到)
如果我遗漏了任何相关信息或代码,或者我不清楚我遇到的问题,请发表评论,我将更正/添加任何必要的信息。
答案 0 :(得分:1)
我认为你需要一点点投射才能获得RichTextBox
中的openFileDialog
:
Sub openFileDialog(ByVal sender As System.Windows.Forms.ToolStripMenuItem, ByVal e As System.EventArgs)
Dim menu = DirectCast(sender.GetCurrentParent(), ContextMenuStrip)
Dim rtb = DirectCast(menu.SourceControl, RichTextBox)
...
End Sub