Ein Menü aus dem MainMenu als Kontextmenu verwenden

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Ein Menü aus dem MainMenu als Kontextmenu verwenden

    Hallo,

    ich nutze VB 2010 (.NET) und habe mit dem Designer eine Form erstellt. Dort gibt es ein MainMenu-Element (Menüleiste) in dem die üblichen Menüs (Datei, Bearbeiten, Ansicht, etc.) enthalten sind. Das Datei-Menü wird beim Laden des Forms dynamisch mit einer Liste von Elementen erweitert, die meisten Elemente stehen aber fest und wurden ebenfalls mit dem Designer gestaltet. Das dynamische Hinzufügen funktioniert einwandfrei.

    Jetzt habe ich ein NotifyIcon und ein NotifyContextMenu hinzugefügt, da das Programm ein Symbol unten rechts neben der Uhr anzeigen soll. Beim Rechtsklick auf das Icon soll das NotifyContextMenu genau dieselben Inhalte anzeigen wie das Datei-Menü der Form.

    Ich habe keine Möglichkeit gefunden das bestehende Menü 1:1 zu verknüfpen. Wie kann ich das Problem lösen?

    Danke schon mal für Eure Anregungen
    Marquis
    @Marquis: Da haste Dir aber ein Problem ausgesucht. :D
    Form mit MenuStrip und ContextMenuStrip.
    Generiere Dir eine neue Form und ersetze den Inhalt Deiner Datei Form1.Designer.vb durch dies hier:
    Form1.Designer.vb

    VB.NET-Quellcode

    1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    2. Partial Class Form1
    3. Inherits System.Windows.Forms.Form
    4. 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    5. <System.Diagnostics.DebuggerNonUserCode()> _
    6. Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    7. Try
    8. If disposing AndAlso components IsNot Nothing Then
    9. components.Dispose()
    10. End If
    11. Finally
    12. MyBase.Dispose(disposing)
    13. End Try
    14. End Sub
    15. 'Wird vom Windows Form-Designer benötigt.
    16. Private components As System.ComponentModel.IContainer
    17. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    18. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
    19. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    20. <System.Diagnostics.DebuggerStepThrough()> _
    21. Private Sub InitializeComponent()
    22. Me.components = New System.ComponentModel.Container()
    23. Me.MenuStrip1 = New System.Windows.Forms.MenuStrip()
    24. Me.AaaToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    25. Me.Aa1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    26. Me.Aa2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    27. Me.Aa3ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    28. Me.BbbToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    29. Me.Bb1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    30. Me.Bb2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    31. Me.CccToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    32. Me.Cc1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    33. Me.Cc2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
    34. Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
    35. Me.MenuStrip1.SuspendLayout()
    36. Me.SuspendLayout()
    37. '
    38. 'MenuStrip1
    39. '
    40. Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.AaaToolStripMenuItem, Me.BbbToolStripMenuItem, Me.CccToolStripMenuItem})
    41. Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
    42. Me.MenuStrip1.Name = "MenuStrip1"
    43. Me.MenuStrip1.Size = New System.Drawing.Size(284, 24)
    44. Me.MenuStrip1.TabIndex = 0
    45. Me.MenuStrip1.Text = "MenuStrip1"
    46. '
    47. 'AaaToolStripMenuItem
    48. '
    49. Me.AaaToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.Aa1ToolStripMenuItem, Me.Aa2ToolStripMenuItem, Me.Aa3ToolStripMenuItem})
    50. Me.AaaToolStripMenuItem.Name = "AaaToolStripMenuItem"
    51. Me.AaaToolStripMenuItem.Size = New System.Drawing.Size(37, 20)
    52. Me.AaaToolStripMenuItem.Text = "aaa"
    53. '
    54. 'Aa1ToolStripMenuItem
    55. '
    56. Me.Aa1ToolStripMenuItem.Name = "Aa1ToolStripMenuItem"
    57. Me.Aa1ToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
    58. Me.Aa1ToolStripMenuItem.Text = "aa1"
    59. '
    60. 'Aa2ToolStripMenuItem
    61. '
    62. Me.Aa2ToolStripMenuItem.Name = "Aa2ToolStripMenuItem"
    63. Me.Aa2ToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
    64. Me.Aa2ToolStripMenuItem.Text = "aa2"
    65. '
    66. 'Aa3ToolStripMenuItem
    67. '
    68. Me.Aa3ToolStripMenuItem.Name = "Aa3ToolStripMenuItem"
    69. Me.Aa3ToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
    70. Me.Aa3ToolStripMenuItem.Text = "aa3"
    71. '
    72. 'BbbToolStripMenuItem
    73. '
    74. Me.BbbToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.Bb1ToolStripMenuItem, Me.Bb2ToolStripMenuItem})
    75. Me.BbbToolStripMenuItem.Name = "BbbToolStripMenuItem"
    76. Me.BbbToolStripMenuItem.Size = New System.Drawing.Size(40, 20)
    77. Me.BbbToolStripMenuItem.Text = "bbb"
    78. '
    79. 'Bb1ToolStripMenuItem
    80. '
    81. Me.Bb1ToolStripMenuItem.Name = "Bb1ToolStripMenuItem"
    82. Me.Bb1ToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
    83. Me.Bb1ToolStripMenuItem.Text = "bb1"
    84. '
    85. 'Bb2ToolStripMenuItem
    86. '
    87. Me.Bb2ToolStripMenuItem.Name = "Bb2ToolStripMenuItem"
    88. Me.Bb2ToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
    89. Me.Bb2ToolStripMenuItem.Text = "bb2"
    90. '
    91. 'CccToolStripMenuItem
    92. '
    93. Me.CccToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.Cc1ToolStripMenuItem, Me.Cc2ToolStripMenuItem})
    94. Me.CccToolStripMenuItem.Name = "CccToolStripMenuItem"
    95. Me.CccToolStripMenuItem.Size = New System.Drawing.Size(37, 20)
    96. Me.CccToolStripMenuItem.Text = "ccc"
    97. '
    98. 'Cc1ToolStripMenuItem
    99. '
    100. Me.Cc1ToolStripMenuItem.Name = "Cc1ToolStripMenuItem"
    101. Me.Cc1ToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
    102. Me.Cc1ToolStripMenuItem.Text = "cc1"
    103. '
    104. 'Cc2ToolStripMenuItem
    105. '
    106. Me.Cc2ToolStripMenuItem.Name = "Cc2ToolStripMenuItem"
    107. Me.Cc2ToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
    108. Me.Cc2ToolStripMenuItem.Text = "cc2"
    109. '
    110. 'ContextMenuStrip1
    111. '
    112. Me.ContextMenuStrip1.Name = "ContextMenuStrip1"
    113. Me.ContextMenuStrip1.Size = New System.Drawing.Size(153, 26)
    114. '
    115. 'Form1
    116. '
    117. Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    118. Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    119. Me.ClientSize = New System.Drawing.Size(284, 262)
    120. Me.ContextMenuStrip = Me.ContextMenuStrip1
    121. Me.Controls.Add(Me.MenuStrip1)
    122. Me.MainMenuStrip = Me.MenuStrip1
    123. Me.Name = "Form1"
    124. Me.Text = "Form1"
    125. Me.MenuStrip1.ResumeLayout(False)
    126. Me.MenuStrip1.PerformLayout()
    127. Me.ResumeLayout(False)
    128. Me.PerformLayout()
    129. End Sub
    130. Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
    131. Friend WithEvents AaaToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    132. Friend WithEvents Aa1ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    133. Friend WithEvents Aa2ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    134. Friend WithEvents Aa3ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    135. Friend WithEvents BbbToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    136. Friend WithEvents Bb1ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    137. Friend WithEvents Bb2ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    138. Friend WithEvents CccToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    139. Friend WithEvents Cc1ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    140. Friend WithEvents Cc2ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    141. Friend WithEvents ContextMenuStrip1 As System.Windows.Forms.ContextMenuStrip
    142. End Class
    und in die Form1.vb kopierst Du dies rein:
    Form1.vb

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub ContextMenuStrip1_Opening(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuStrip1.Opening
    3. ' Hauptmenü-Submenü zu Contextmenü verschieben
    4. Me.ContextMenuStrip1.Items.Add(CccToolStripMenuItem)
    5. End Sub
    6. Private Sub ContextMenuStrip1_Closing(sender As System.Object, e As System.Windows.Forms.ToolStripDropDownClosingEventArgs) Handles ContextMenuStrip1.Closing
    7. ' zurückschieben
    8. Me.MenuStrip1.Items.Add(CccToolStripMenuItem)
    9. End Sub
    10. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!