日期:2014-05-20  浏览次数:20975 次

麻烦兄弟们看看,这个功能怎么实现!~
小弟菜鸟一个,想实现下面的功能,不知道应该如何实现

在一个Panel里放入一些UserControl,像下面这个排列(一个阿拉伯数据代表一个用户控件):
        1           2
        3           4
        5           6
        7           8
        9           10

当权限不够时可能会隐藏某些模块,排列情况会如下所示:
        2           3
        4           5
        6           7
        8
       

我原本是打算用ListView实现的,但ListView每一个Item好像不能是用户控件
想了两天了,还是不知道怎么做,麻烦各路英雄豪杰指点指点!
谢谢!~

------解决方案--------------------
panel应该可以实现。
在某些权限约束下,可以先romove一些(1,9,10),剩下的重新定位显示.
------解决方案--------------------
//参考如下代码
private void Form1_Load(object sender, EventArgs e)
{
Point[] vPoints = new Point[6]; //先得到控件排列的位置
for (int i = 0; i < 3; i++)
{
vPoints[i] = new Point(10, i * 30 + 10);
vPoints[i + 3] = new Point(110, i * 30 + 10);
}
//要处理的控件
Control[] vControls = { button1, button2, button3, button4, button5 };
//用Tag表示权限大小
button1.Tag = 1;
button2.Tag = 2;
button3.Tag = 3;
button4.Tag = 4;
button5.Tag = 5;

int vTemp = 0;
int 权限 = 4; // 权限也高看见得越多
foreach (Control vControl in vControls)
{
//vControl.Tag = 0;
if ((int)vControl.Tag <= 权限)
{
vControl.Visible = true;
vControl.Left = vPoints[vTemp].X;
vControl.Top = vPoints[vTemp].Y;
vTemp++;
}
else vControl.Visible = false;
}
}