У меня есть форма с многочисленными графиками и добавили ContextMenuStrip, когда график правой щелкнул, так что пользователь может скопировать изображение графика в буфер обменаОпределить источник диаграммы/управления от ContextMenuStrip Нажмите
Public Sub Chart_Click(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Chart1.MouseClick, _
Chart2.MouseClick, Chart3.MouseClick, Chart4.MouseClick
If e.Button = MouseButtons.Right Then
Dim cmus As ContextMenuStrip = New ContextMenuStrip
Dim cms1 As ToolStripMenuItem = New ToolStripMenuItem("Copy as Image")
cms1.Tag = 0
cmus.Items.Add(cms1)
For Each c As ToolStripMenuItem In cmus.Items
AddHandler c.Click, AddressOf Chart_cMenu_Click
Next
cmus.Show(New Point(Control.MousePosition.X, Control.MousePosition.Y))
End If
End Sub
Тогда я бы например, чтобы определить, на какую диаграмму щелкнул, чтобы я мог скопировать этот график в буфер обмена. Это кажется простой проблемой для меня, но я не могу понять, почему независимо от того, что я пытаюсь идентифицировать, Owner
, Parent
, SourceControl
меню правой кнопки мыши всегда возвращает мне значение Nothing
.
Public Sub Chart_cMenu_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim menuItem As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
Dim cms As ContextMenuStrip = CType(menuItem.Owner, ContextMenuStrip)
Dim _owner As Control = CType(cms.SourceControl, Chart)
Select Case menuItem.Text
Case "Copy as Image"
Dim ms As New System.IO.MemoryStream(100)
_owner.SaveImage(ms, ChartImageFormat.Bmp)
Dim bm As Bitmap = New Bitmap(ms)
Clipboard.SetImage(bm)
End Select
End Sub
Любые идеи, как определить исходный график?
возможно дубликат [нуль ContextMenuStrip.Owner свойств при получении от вложенной ToolStripMenuItem] (http://stackoverflow.com/questions/12094528/contextmenustrip-owner-property-null-when-retrieving-from-nested- toolstripmenuit) – LarsTech
все еще получает 'menuSource = (CType (sender, ContextMenuStrip)). SourceControl'' 'ничего 'не использует это решение – TylerDurden