1、思路
(1)获取一个集合(数据)
(2)遍历集合,设置统一的控件样式、设置控件坐标
(3)关联事件
2、实现
项目开发中,当需求发生改变时,UI界面需要简单更改,这时代码就需要去修改,这样子做比较麻烦,因此可以通过获取数据库数的方式,增加、删除、更改,更改这部分简单的UI需求。
2.1 数据库连接配置
本文采用SQLite轻量型数据库,配置数据库。
实体类Student
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public int Number { get; set; }
public string ClassName { get; set; }
}
获取数据库的数据保存到集合中
public class StudentService
{
public static List<Student> CheckSQLite()
{
SQLiteHelper SQLiteHelper = new SQLiteHelper();
//string sql = $"select * from {SQL_Table} LIKE '{time}%'";
string sql = "select * from Student WHERE Name !='NULL';";
SQLiteDataReader reader = SQLiteHelper.GetReader(sql);
List<Student> studentList = new List<Student>();
while (reader.Read())
{
studentList.Add(new Student
{
ID= Convert.ToInt32(reader["ID"]),
Name= reader["Name"].ToString(),
Number = Convert.ToInt32(reader["Number"]),
ClassName= reader["ClassName"].ToString()
});
}
reader.Close();
return studentList;
}
}
下面以按钮Button为示例,设置统一演示,控件在UI上显示的,可以更具属性的一个标致位或集合的索引判断.
坐标X=初始坐标+(index%行显示个数-1)*适应宽度--取余数
坐标Y=初始坐标+(index/行显示个数)*适应宽度--取整除数
private void LoadUI(List<Student> students)
{
foreach (var item in students)
{
Button button = new Button();
button.Name = "B"+item.Number;
button.Text = item.Name;
button.Tag = $"{item.ID},{item.Name},{item.Number},{item.ClassName}";
int x = 88; int y = 30;
if (Convert.ToInt32(item.ID) % 7 != 0)
{
x = 105 * ((Convert.ToInt32(item.ID) % 7) - 1) + 88;
}
y = 64 * (Convert.ToInt32(item.ID) / 7) + 30;
button.Location = new System.Drawing.Point(x, y);
button.Size = new System.Drawing.Size(100, 45);
button.TextAlign = ContentAlignment.MiddleCenter;
this.Controls.Add(button);
button.Click += new EventHandler(button_Click);
}
}
把控件添加到 Controls控件集合中,并关联一个统一个事件,集中管理,通过控件的属性,完成逻辑上的控制
this.Controls.Add(button);
button.Click += new EventHandler(button_Click)
private void button_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
MessageBox.Show(button.Text+"来自于"+button.Tag);
}
程序运行效果
本文相关Demo下载链接:https://download.csdn.net/download/qq_39157152/25970463