用户控件

用户控件
 用户控件:也就是自定义控件
                                                                                                      可以把数据库的人员管理系统的展示可以,放头像
                                                                                                      制作方法:
                                                                                                    (一)在一项目上右键点击添加一个新建项,找到【用户控件】UserControl
                                                                                                    (二)双击打开用户自定义控件
                                                                                                    (三)这个东西很像无边框窗口,实际可以理解成panel容器
                                                                                                    (四)然后把其他已有的了控件往里拽就是了
                                                                                                    (五)这样就是一个初步的人物小卡片了
                                                                                                    (六)点击启动,生成成功了
                                                                                                    (七)然后按住拖进去就会看到一个一模一样的标签卡片
                                                                                                    (八)然后右键查看属性会发现和Panel容器一样
                                                                                                    (九)但是没有办法在属性里改变内容
                                                                                                    (十)点击进入构造函数进行访问,同时设置权限,并选取图片
                                                                                                    
                                                                                                    (十一)设置图片的大小可以用代码
                                                                                                    
                                                                                                    【绑定数据库】
                                                                                                    (十二)因为需要把数据库的东西展示出来,所以需要连接数据库
                                                                                                    首先,把刚才构造函数里写的代码删掉不要了
                                                                                                    然后,把图片按刚才的方法放到指定位置,一一对应相应的人
                                                                                                    排列相应的布局,查看代码写方法
                                                                                                    
                                                                                                    
                                                                                                    开始封装:
                                                                                                    public void DataBind()                                     
                                                                                                          {
                                                                                                                  flowLayoutPanel1.Controls.Clear();                                       
                                                                                                                  //将数据库的数据取出来
                                                                                                                  List<Users> ulist = new UsersData().SelectALL();                          

                                                                                                                  //每一个数据对象都做成一个用户控件:遍历

                                                                                                                   int count = 0;                                                                       定义count是零
                                                                                                                   int HeadIndex = 0;                                                               
                                                                                                                                                                                                               
                                                                                                                   foreach (Users u in ulist)                                                      遍历
                                                                                                                          {
                                                                                                                                 UserControl1 uc = new UserControl1();                  
                                                                                                                                 【uc.label5.Text = u.Ucode;】                    
                                                                                                                                 uc.pictureBox1.BackgroundImage = Image.FromFile("img/" + HeadIndex + ".png");             图像的绑定
                                                                                                                                 uc.label1.Text = "姓名:" + u.NickName;                          
                                                                                                                                 uc.label2.Text = "性别:" + (u.Sex ? "" : "");
                                                                                                                                 uc.label3.Text = "生日:" + u.Birthday.ToString("yyyy年MM月dd日");
                                                                                                                                 uc.label4.Text = "民族:" + u.Nation;          民族没有属性扩展
                                                                                                                                 HeadIndex++;                                             
                                                                                                                                 //将做好的用户控件添加到容器中
                                                                                                                                 flowLayoutPanel1.Controls.Add(uc);               


                                                                                                                                 然后是判断:
                                                                                                                                  if (count < 2)                                              
                                                                                                                                          {
                                                                                                                                                 Panel p = new Panel();                           设置之间的间距,在中间放一个Panel,每创建完一个再创建一个Panel
                                                                                                                                                 p.Height = uc.Height;
                                                                                                                                                 p.Width = 50;
                                                                                                                                                 flowLayoutPanel1.Controls.Add(p);
                                                                                                                                           }
                                                                                                                                          count++;                                                         
                                                                                                                                          if (count >= 3) { count = 0; }                            
                                                                                                                                    }
                                                                                                                              }
                                                                                                   
                                                                                                    public Form1()
                                                                                                          {
                                                                                                                  InitializeComponent();
                                                                                                                  DataBind();                                               调方法
            
                                                                                                           }
                                                                                                  (十三)没有出现滚动条
                                                                                                  (十四)可以设置布局的大小
                                                                                                  (十五)背景色的布局
                                                                                                  (十六)设置之间的间距
                                                                                                  (十七)Panel p = new Panel(); 
                                                                                                                                               
                                                                                                  (十八)定义一个中间变量(也可以用Margin属性)
                                                                                                  (十九)背景变色:
                                                                                                  private Color oldcolor;                                            
                                                                                                  private bool colorget = false;                                   
                                                                                                  private void UserControl1_MouseEnter(object sender, EventArgs e)
                                                                                                           {
                                                                                                                     if (colorget == false)                            
                                                                                                                             {
                                                                                                                                       oldcolor = this.BackColor;           
                                                                                                                                                                                      
                                                                                                                                       colorget = true;                          
                                                                                                                              }
                                                                                                                             this.BackColor = Color.Red;
                                                                                                            }

                                                                                                  【MouseLeave-----鼠标移出】
                                                                                                  private void UserControl1_MouseLeave(object sender, EventArgs e)
                                                                                                             {
                                                                                                                          this.BackColor = oldcolor;                           
                                                                                                              }
                                                                                                  (二十)这时鼠标移动到图片时并不会改变颜色,而是默认已移出,
                                                                                                  图片的鼠标设置完成了之后,再把其他的label1鼠标属性也一个个的绑定
                                                                                                  基本已经完成了
                                                                                                  (二十一)还可以是鼠标变小手
                                                                                                  (二十二)增加修改和删除按钮
                                                                                                  private void button2_Click(object sender, EventArgs e)
                                                                                                                  {
                                                                                                                                new UsersData().DeleteUser(this.label5.Text);
                                                                                                                                Form1 f1 = this.Parent.Parent as Form1;                        
                                                                                                                                f1.DataBind();                                                                 
                                                                                                                    }
                                                                                                    (二十三)删完之后调取刷新
                                                                                                    (二十四)这时删完之后清空
                                                                                                    
                                                                                                    (二十五)基本完成
                                                                                                    (二十六)修改:
                                                                                                    Form2 f2 = new Form2(this.label5.Text);              和删除一样,传入的是它的编号,不懂得话看看删除方法
                                                                                                    f2.Show();
                                                                                                    然后在Form2的构造函数里写
                                                                                                    public update(string uc)                                       
                                                                                                                 {
                                                                                                                                InitializeComponent();
                                                                                                                                label1.Text = "要删除的编号是:"+uc;                 
                                                                                                                 }
                                                                                                    (二十七)基本完成
原文地址:https://www.cnblogs.com/yunpeng521/p/7215951.html