如何创建可以修改“当前控件”的上下文菜单?

佩鲁特克

在我的应用程序中,RichTextBox当打开某个表单时会动态创建一个。当前,单击该框会打开一个OpenFileDialog,用户可以在其中选择一个文件,然后将文件位置放入RichTextBox

我的最终用户昨天告诉我,他想要以下内容:

  • 左键单击RichTextBox应在资源管理器中打开指定的文件
  • 右键单击将打开一个ContextMenuStrip,带中的选项之一为“选择文件”。

我的修订代码包含在以下要点中:

打开文件对话框子,其处理该.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要点中看到)

如果我遗漏了任何相关信息或代码,或者不清楚我遇到的问题,请发表评论,我将更正/添加任何必要的信息。

标记

我想你只需要一点点铸造得到RichTextBoxopenFileDialog

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从上下文菜单获取当前控件名称

如何为动态创建的上下文菜单栏分配动态控件?

Windows 10上下文菜单修改

修改 TextBox 上下文菜单/MenuFlyout

Osmdroid:如何在标记旁边创建上下文菜单?

如何创建Konva-React上下文菜单

如何从Finder的上下文菜单创建新文件?

快速创建React上下文菜单

是否可以在扩展中修改 Visual Studio 调用堆栈窗口上下文菜单?

上下文菜单

Flutter - 如何获取当前上下文?

如何从XS访问当前上下文?

如何将上下文菜单添加到richTextBox控件?

如何将相同的动态上下文菜单绑定到动态数量的用户控件?

如何禁用摩纳哥上下文菜单?

如何禁用 iFrame 上下文菜单?

在当前上下文中不存在控件

窗体上任何控件的上下文菜单

如何在Mac上的WKWebView中的上下文菜单被修改或覆盖?

kubectl当前上下文-是否可以保持多个当前上下文处于活动状态?

如何创建上下文菜单,这些菜单在oracle apex报表中单击鼠标右键?

如何在上下文菜单handsontable中创建子菜单?

如何在上下文菜单中创建弹出菜单?

如何在 Outlook (VSTO) 的上下文菜单中创建动态子菜单

jsTree和上下文菜单:修改项目

编辑时修改 QTableWidgetItem 上下文菜单

修改压缩的 zip 文件夹上下文菜单

如何在剑道上下文菜单中获取当前行?

我可以为 Polly 或 Forms 等 Microsoft Teams 创建上下文菜单条目吗