label可以吗?
用datagrid之类的绑定控件是比较正常的思路,应为难保你的用户数量不会改变。难道你从新构建?当然你从数据库读出数据动态创建button,label等并帮定事件也是可以。
如果追求速度,那么简化到极点就是放一个panel,然后用system.draw下面的函数画出来,实际上是不存在的,然后再panel的click和double click事件里区分点击得区域判断点的是哪个用户。

解决方案 »

  1.   

    一个屏幕放30个button肯定不是好的方案,眼睛都看花了
    你可以先选用户,然后一个button搞定
      

  2.   

    用LIST选择用户进行相应的操作!
      

  3.   

    Oceanson(洋之光)的有道理,画出来比较好!
      

  4.   

    既然那些按钮的作用是一样的,那放一个不就行了。
    在Click事件中判断是哪个用户点击的。

     switch ( UserNo )
     {
         case : "用户01"
                   //
              break ;
         case : "用户02"  
            ..
     }
      

  5.   

    不好意思,昨晚不在了因为我是做一个报警监控程序,Button只是用户的一个表示方案,用户有事件时,Button的效果还要闪烁,可以想象就是一版的用户,每个按钮代表一个。我觉得lable在显示几十个(甚至有100多个)的时候好象也会闪烁吧?
    一开始我就想用Button,也还方便,但是问题就是在页面转来的时候就刷屏的,好象我以前看见过一篇文章,讲控件怎么初始化的。是不是可以只在第一次页面加载的时候刷一下,以后的页面跳转就不会有刷屏呢?好象写在load也回刷吧?
      

  6.   

    this.SetStyle(ControlStyles.OptimizedDoubleBuffer |   
                        ControlStyles.ResizeRedraw | 
                        ControlStyles.AllPaintingInWmPaint, true);
      

  7.   

    public Form1()
            {
                InitializeComponent();            this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
                        ControlStyles.ResizeRedraw |
                        ControlStyles.AllPaintingInWmPaint, true);
      

  8.   

    分用户选择吧,群组
    不理解this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
                        ControlStyles.ResizeRedraw |
                        ControlStyles.AllPaintingInWmPaint, true);
    没太多效果
      

  9.   

    ding a aa a a a a
      

  10.   

    no,no.no
    建议使用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.");
    }
      

  11.   

    我先试试
    greenery(greenery)方法真的不能用Button么?
      

  12.   

    怎么没有人呢?再说明一下
    有200个Button
      

  13.   

    Form不是有DoubleBuffered属性么?
      

  14.   

    放个time 控件,依次把button从不可见-->可见.
      

  15.   

    我用多线程 一个线程 显示10个button 可行么?
      

  16.   

    用GDI+ 画出
    这很像在做游戏---
      

  17.   

    Button 你创建对象太多了
      

  18.   

    Button 是用来做这种事的吗?一个 Form 上超过 10 个 Button 的 UI 就够傻了...ListView...
      

  19.   

    楼上的兄弟啊
    我试了试listview,一次性加载200个item 也会出现刷啊刷的效果
    难道是我机器的显卡不行啊大哥们也帮我看看
      

  20.   

    你应该先建立一个ListviewItem [] myItems = new ListviewItem [200];
    然后对这个数组的项目进行付值,最后在一次将其加入列表。而不是在循环中不断加入。
    for (i = 0 ; i < 200 ; i++)
    {
     myItems[i] = new ListviewItem ();
     myItems[i].text = xxxx;
    }
    listview1.Items.Add(myItems);