关于C#酒店信息管理系统开发(1)左侧下拉菜单与房态图

一、项目描述
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++;
                }
            }
        }
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值