用户控件 用户控件:也就是自定义控件 可以把数据库的人员管理系统的展示可以,放头像 制作方法: (一)在一项目上右键点击添加一个新建项,找到【用户控件】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; } (二十七)基本完成
原文:http://www.cnblogs.com/yunpeng521/p/7215951.html