我需要一些抽象方法来处理多个控件,例如ListView
。
现在我有这样的事情。我需要在panel1,panel2,panel3,panel4等函数中编写每个面板:
private void ListDir(string path, int panel_number)
{
foreach (string dir in ListDirectories(@path))
{
ListViewItem li = new ListViewItem(dir);
switch (panel_number)
{
case 1:
panel1.Items.Add(li);
break;
case 2:
panel2.Items.Add(li);
break;
case 2:
panel3.Items.Add(li);
break;
}
}
但我需要使这个功能更抽象我需要它用于具有相同控件的多个选项卡。用户可以创建x个新选项卡,我无法在交换机情况下处理它。
要清楚我的目标是:
private void ListDir(string path, int panel_number)
{
foreach (string dir in ListDirectories(@path))
{
ListViewItem li = new ListViewItem(dir);
panel[panel_number].Items.Add(li);
}
}
答案 0 :(得分:0)
如果您只创建一个包含Panel的列表的成员字段,那么您的帖子的第二个代码部分将会起作用:
private List<Panel> panel = new List<Panel>();
创建面板后(例如在onLoad中将它们添加到面板列表
)panel.AddRange(new Panel[]{ panel1, panel2, panel3 });
请注意,panel_number
现在必须为零索引,这意味着调用ListDir(path, 0)
会将其添加到panel1
。