C#中MenuItems的通用集合?

时间:2013-09-04 00:43:42

标签: c# generics drop-down-menu

我正在努力在菜单中显示音频输入设备列表,而且我对C#还不熟悉。输入设备的数量不仅因机器而异,有人可能在程序运行时添加或减少USB设备。我编写的代码会在菜单激活时进行检查,但我必须限制可能的输入设备数量。它不太可能有超过10个输入设备,但是,为了更好地理解C#,我想看看是否可以使用泛型,这样我就不必限制列表了。

以下是我现在的代码:

MainMenu sgFileMenu = new MainMenu(); 
List<MenuItem> inputDevice = new List<MenuItem>();

MenuItem myMenuItemInput = new MenuItem("&Input Devices");
sgFileMenu.MenuItems.Add(myMenuItemInput);

for (int i = 0; i < deviceCount; i++)
{
    myMenuItemInput.MenuItems.Add(inputDevice[i]);
}

编译但在运行时会产生ArgumentOutOfRange异常。我显然遗漏了一些关于如何设置泛型的东西 - 有人能提醒我吗?

在阅读了一些评论后添加 - deviceCount是一个整数而不是0-在其他地方检查过。很明显我以前需要做点什么:

    myMenuItemInput.MenuItems.Add(inputDevice[i]);

但我不确定那是什么。

2 个答案:

答案 0 :(得分:2)

试试这个:

for (int i = 0; i < inputDevice.Count; i++)
{
    myMenuItemInput.MenuItems.Add(inputDevice[i]);
}

无论如何,您已将inputDevice初始化为空列表,因此它不包含任何MenuItem

答案 1 :(得分:0)

这与泛型无关。我猜deviceCount是除了0以外的一些数字。因为你初始化inputDevice但从未实际添加任何内容,它会保持为空,inputDevice[i]将抛出该异常。< / p>