我想在VB .NET中收集一些控件列表中的一些MenuItems,以便轻松管理其中的许多控件。以下代码使用CheckBox作为例子:
dim myMenuList() as Control
myMenuList = New Control() {MenuItem1, MenuItem2, MenuItem3, MenuItem4}
...但是以这种方式使用它,使用MenuItem,Visual Studio会给我这个错误:
It is impossible to convert from 'System.Windows.Forms.MenuItem' to 'System.Windows.Forms.Controls'
我的代码出了什么问题?我以为MenuItem也是一个控件。 如何制作MenuItems列表?
提前致谢,
再见 hwktest
答案 0 :(得分:1)
我的代码出了什么问题?我认为MenuItem也是一个控件。
MenuItem 不是从 Control 派生的。查看继承层次结构,您将看到最后一个公共类是Component
..
如何制作MenuItems列表?
像这样:
Dim myMenuList As New List(Of MenuItem) From {MenuItem1, MenuItem2, MenuItem3, MenuItem4}
如果您愿意,可以使用数组:
Dim myMenuList As MenuItem() = {MenuItem1, MenuItem2, MenuItem3, MenuItem4}
答案 1 :(得分:0)
由于MenuItem不是基于Control而是基于Component Class的Windows.Forms.Menu类,因此最好的选择是找到一个共同的祖先,在这种情况下它将是{{3} }。
尝试这样的事情。
Imports System.ComponentModel
Public Class Form1
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Dim MenuItem1 As New MenuItem
Dim MenuItem2 As New MenuItem
Dim MenuItem3 As New MenuItem
Dim MenuItem4 As New MenuItem
Dim button1 As New Button
Dim myMenuList() As Component = New Component() {MenuItem1, MenuItem2, MenuItem3, MenuItem4, button1}
End Sub
End Class