label可以吗?
用datagrid之类的绑定控件是比较正常的思路,应为难保你的用户数量不会改变。难道你从新构建?当然你从数据库读出数据动态创建button,label等并帮定事件也是可以。
如果追求速度,那么简化到极点就是放一个panel,然后用system.draw下面的函数画出来,实际上是不存在的,然后再panel的click和double click事件里区分点击得区域判断点的是哪个用户。
用datagrid之类的绑定控件是比较正常的思路,应为难保你的用户数量不会改变。难道你从新构建?当然你从数据库读出数据动态创建button,label等并帮定事件也是可以。
如果追求速度,那么简化到极点就是放一个panel,然后用system.draw下面的函数画出来,实际上是不存在的,然后再panel的click和double click事件里区分点击得区域判断点的是哪个用户。
你可以先选用户,然后一个button搞定
在Click事件中判断是哪个用户点击的。
用
switch ( UserNo )
{
case : "用户01"
//
break ;
case : "用户02"
..
}
一开始我就想用Button,也还方便,但是问题就是在页面转来的时候就刷屏的,好象我以前看见过一篇文章,讲控件怎么初始化的。是不是可以只在第一次页面加载的时候刷一下,以后的页面跳转就不会有刷屏呢?好象写在load也回刷吧?
ControlStyles.ResizeRedraw |
ControlStyles.AllPaintingInWmPaint, true);
{
InitializeComponent(); this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw |
ControlStyles.AllPaintingInWmPaint, true);
不理解this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw |
ControlStyles.AllPaintingInWmPaint, true);
没太多效果
建议使用listview控件,再选择大图标模式。
效果就像你看我的文件夹时,使用平铺模式的效果。
然后处理单击双击事件,获取选择的项目就可以了。
public bool SetUser()
{
listView1.View = System.Windows.Forms.View.Tile;
DataTable dataSource = GetUser();
for (int i = 0; i < dataSource.Rows.Count; i++)
{
ListViewItem item = new ListViewItem();
item.Text = dataSource.Rows[i]["userName"].ToString();
item.Tag = dataSource.Rows[i]; // 保存用户信息
item.ImageIndex = GetUserIcon((int)dataSource.Rows[i]["UserType"]);
}
} private int GetUserIcon(int p)
{
// 假设你有2个用户类型,分别对应了2个图片
switch (p)
{
case 0:
return 1;
case 1:
return 2;
default:
return 0;
}
} private void listView1_DoubleClick(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
DataRow userData = (DataRow)listView1.SelectedItems[0].Tag;
dosomething(userData);
}
} private void dosomething(DataRow userData)
{
throw new Exception("The method or operation is not implemented.");
}
greenery(greenery)方法真的不能用Button么?
有200个Button
这很像在做游戏---
我试了试listview,一次性加载200个item 也会出现刷啊刷的效果
难道是我机器的显卡不行啊大哥们也帮我看看
然后对这个数组的项目进行付值,最后在一次将其加入列表。而不是在循环中不断加入。
for (i = 0 ; i < 200 ; i++)
{
myItems[i] = new ListviewItem ();
myItems[i].text = xxxx;
}
listview1.Items.Add(myItems);