一、项目描述
1、使用C# 语言,WinForm窗体应用程序
2、基于SQL server 数据库
二、主界面结构说明
1、下拉左菜单
实现思路:继承Button,重写生成自定义控件,分别父控件,子控件;循环添加到panel容器,通过显示/隐藏切换方式,进行展开,收缩!
实现代码
public void CreateMenu(DataTable dt)
{
treeList = FillModel(dt);
int height_ = 50;
foreach (TreeModel item in treeList)
{
if (item.ParentNo == "")
{
ParentItem btNode = new ParentItem();
//btNode.IsImage = (item.ChildrenNum > 0 ? true : false);
btNode.IsImage = item.HasChildren;
btNode.BackColor = Color.Black;
btNode.Name = item.ModuleNo;
btNode.Text = item.ModuleName;
btNode.Size = new Size(panel_main.Width, height_);
btNode.Font = new System.Drawing.Font("微软雅黑", MainModel.fontSize, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
btNode.Dock = DockStyle.Top;
btNode.Click += BtParent_Click;
panel_main.Controls.Add(btNode);
btNode.BringToFront();
}
if (item.HasChildren)
{
IEnumerable<TreeModel> children = treeList.Where(t => t.ParentNo == item.ModuleNo).ToList();
if (children != null)
{
Panel panelChi = new Panel();
panelChi.Name = "panel_" + item.ModuleNo;
panelChi.Size = new Size(panel_main.Width, (children.Count() * height_));
panelChi.Dock = DockStyle.Top;
panelChi.Visible = false;
foreach (var item_ in children)
{
ChildrenItem btChildren = new ChildrenItem();
btChildren.Name = item_.ModuleNo;
btChildren.Text = item_.ModuleName;
btChildren.Size = new Size(panel_main.Width, height_);
btChildren.Dock = DockStyle.Top;
panelChi.Controls.Add(btChildren);
btChildren.BringToFront();
btChildren.Click += BtChildren_Click;
panel_main.Controls.Add(panelChi);
panelChi.BringToFront();
}
}
}
}
}
2、房态图(酒店管理的最重要模块)
全部排序:按房后依次排列
按楼层排序:排完同一层房号,换行排列下一层
按类型排序:排完同一类型,换行排列不同类型
实现思路:继承Button,重写生成自定义房态控件,分别给房间状态类型设置颜色;根据页面的宽度,以及房间的数量;进行多维数据形式排列
循环添加代码
public void CreateRoom(bool isLoad)
{
int xx = 0;
int yy = 0;
if (isLoad)
{
roomStateInfo = RoomApp.GetAllList(constr);
}
int counts = roomStateInfo.Rows.Count;
int maxWidth = panel_main.Width;
int rowTotal = (maxWidth - interval) / (sizeWidth + interval);
int tabIndex = 0;
int rowNo = 0;
foreach (DataRow dr in roomStateInfo.Rows)
{
xx = interval * (tabIndex + 1) + sizeWidth * tabIndex;
yy = interval + (sizeWidth + interval) * rowNo;
int state = GetState(dr["State"].ToString());
CreateMainMenu(int.Parse(dr["SortNo"].ToString()), dr["RoomNo"].ToString(), dr["TypeName"].ToString(), sizeWidth, sizeWidth, xx, yy, state);
tabIndex++;
if (tabIndex == rowTotal)
{
tabIndex = 0;
rowNo++;
}
}
}