所以我有一个数据库'Restaurant',带有'dining_tables'表。
在我的C#应用程序中,我试图计算'dining_tables'表中的表数量,然后为每个表创建一个按钮,并动态地将它们放在表单上,并排放置,并按行放置。
这就是我从数据库中获取表格的方法:
(SQL是我为简化sql任务而制作的一个类)
SqlDataReader dr = SQL.queryExec("SELECT * FROM tables");
while(dr.Read()){
var tblName = dr["tbl_Name"];
}
^现在我正在提取每个表的名称,我已经完成了以下操作。
1)创建一个按钮,对其进行样式设置,并将当前的“tblName”应用于按钮的text属性。 2)将按钮添加到表单。
我现在停留的是找出如何在每个tbl_Name的表单上垂直对齐按钮,然后在每5个按钮后继续新行。
注意:我打算稍后通过添加页面来改进这一点,但是现在我想知道如何完成上述操作。
非常感谢任何积极的支持。
提前谢谢大家。
答案 0 :(得分:0)
您是否尝试过使用flowLayoutPanel? 它是一个控制面板,它将自动对齐并定位其中的所有控件,它在属性FlowDirection中有4个方向,尝试使用它,我认为你只需要使用这个配置
flowLayoutPanel.FlowDirection = FlowDirection.LeftToRight;
flowLayoutPanel.WrapContents = true;
你只需要计算5个按钮的宽度,加上它的magin然后将其设置为flowLayoutPanel的宽度
答案 1 :(得分:0)
SqlDataReader dr = SQL.queryExec("SELECT * FROM tables");
int i = 0;
while (dr.Read())
{
Button btn = new Button();
btn.Text = dr["tbl_Name"].ToString();
btn.Width = 100;
btn.Height = 50;
btn.Left = (i % 5) * 110;
btn.Top = (i / 5) * 60;
Controls.Add(btn);
i++;
}
答案 2 :(得分:0)
或者只是
SqlDataReader dr = SQL.queryExec("SELECT * FROM tables");
int i = 0;
while (dr.Read())Controls.Add(new Button() {Text = dr["tbl_Name"].ToString(),
Size = new Size(100, 50), Location = new Point(i % 5 *110, i++ / 5 * 60) });
答案 3 :(得分:0)
Sayka的答案是最好的,当使用纯代码而没有其他控件来生成一个公式,可以正确对齐5个按钮和后面的换行符。
但是,我个人发现flowlayoutpanel对我来说是最好的选择,因为Scroll功能可以帮助我避免输入页面。