美文网首页
自定义床位分布图-BedMap

自定义床位分布图-BedMap

作者: Memoyu | 来源:发表于2019-10-16 23:19 被阅读0次

认知尚浅,如有错误,愿闻其详!

概述

  工作需要,需要个床位分布图,我们做的是比较简单的,没有涉及到分楼层等一些复杂的业务,所以看起来这个控件会简单点。目前业务需求也没太多,就简单的实现了换床等操作。后面会继续完善。

基本构造

  控件基本实现并不难,对于初学者的我来说,也没能去好好地关心性能问题,在加载几百个床位的时候略显吃力。毕竟是一次性全部加载,不过这个可以通过分段加载可以解决,后期业务需要就弄弄。
  以下是控件的基本构造:
  底层是UserControl,存储床位的是FlowLayoutPanel控件,用于流式排布控件,然后为了使得床位具有一定属性,再写一个拓展Panel,作为床位。每个床位有Id、Code、患者信息等属性,Panel内部由Label来展示文本(本来想用Graphics绘制的,这样就不用控件事件继承底层控件事件了,比如说点击事件),需要图形的也可以添加Picture控件,根据需求而定。床位的列数决定FlowLayoutPanel宽度,行数决定FlowLayoutPanel高度,高度适配是为了触发UserControl的Scroll(开启AutoScroll),以满足滚动,外加ContextMenuStrip右键菜单,添加更多操作。

床位结构.png
控件内部实现
床位分布-基本实现.png
控件创建
        private void CreateBedsMap()
        {
            //添加床位
            List<BedPropOption> beds = new List<BedPropOption>();
            for (int i = 0; i < 12; i++)
            {
                BedPropOption bed = new BedPropOption();
                bed.BedId = i;
                bed.BedCode = $"{i}号";

                beds.Add(bed);
            }
            //添加右键菜单
            List<ToolStripItem> menus = new List<ToolStripItem>();
            ToolStripItem item_1 = new ToolStripMenuItem();
            item_1.Name = "转床";
            item_1.Text = $"转床";
            item_1.Click += new EventHandler(contextMenuStrip_ItemClick);
            menus.Add(item_1);
            for (int j = 0; j < 5; j++)
            {
                ToolStripItem item = new ToolStripMenuItem();
                item.Name = j.ToString();
                item.Text = $"功能{j}";
                item.Click += new EventHandler(contextMenuStrip_ItemClick);
                menus.Add(item);
            }

            cBedMapControl1.MouseToolMenu = menus;
            cBedMapControl1.Beds = beds;
        }
        /// <summary>
        /// 右键菜单工能
        /// </summary>
        private void contextMenuStrip_ItemClick(object sender, EventArgs e)
        {
            ToolStripItem item = sender as ToolStripItem;
            ContextMenuStrip contextMenu = item.GetCurrentParent() as ContextMenuStrip;//获取菜单项父容器
            BedPanel bedPanel = contextMenu.SourceControl as BedPanel;//获取触发菜单控件
            switch (item.Name)
            {
                case "转床":
                    break;
            }
        }

效果展示

有需要的可以联系我,控件内部使用了一些私有模型,没办做成公有控件。


床位分布图.gif

相关文章

  • 自定义床位分布图-BedMap

    认知尚浅,如有错误,愿闻其详! 概述   工作需要,需要个床位分布图,我们做的是比较简单的,没有涉及到分楼层等一些...

  • Android 折线分布图LineChartView

    开篇   如何自定义折线分布图。 LineChartView 可支持功能点: 1、设置XY轴坐标颜色 2、设置XY...

  • 小析《python 画直方图》中的numpy.interp(u_

    左边是自定义的概率分布图PDF,右边是对应的CDF 现在目的是画出左图的近似柱状图, 这里需要numpy.inte...

  • 《床位》

    床 位 监察官:“听说这家医院有人利用私权占用床位,今儿个,我特来——暗访。” 监察官:“可是,我……我从哪下手...

  • 床位

  • 猜猜哪儿看的

    fans分布图

  • 正态分布图?在Power BI中可以这样做

    ​有星友问,在PowerBI的图表中有没有正态分布图,其实并没有专门的正态分布图表,但并不是不能绘制正态分布图。 ...

  • 2018-09-17

    大脑职能分布图

  • 2018-04-01

    山东吸毒分布图

  • 等床位

    文/牛妈 大医院看病就是一个不好——人多难入院。 昨儿个在县城医院将老爸转诊到同济,结果到了同济,没床位,不能入院...

网友评论

      本文标题:自定义床位分布图-BedMap

      本文链接:https://www.haomeiwen.com/subject/agqlmctx.html