15_C# 实现VMS客户端——控件_ListView

声明:

  • 本博客为原创博客,主要讲述使用C#语言调用服务端SDK方式完成VMS客户端完整功能实现,转载请声明出处。
  • 如有技术问题或需交流可直接联系本人邮箱:chuiwenwei@163.com

简述:

  • ListView在DotNetBar中改动不大,所以此处就以ListView为演示讲述,也会在WinForm中主要使用ListView控件。ListView控件的很多操作都需要代码手动实现,比如动态排序功能。后面会简单介绍下这部分。
目录:
  • ListView属性
  • ListView操作
1.ListView属性
  • BackColor 背景色
  • ForeColor 前景色
  • View 视图【此处选择Details显示详细信息】
2.ListView操作
<span style="white-space:pre">	</span>#region 局部变量
        /// <summary>
        /// 记录排序方式
        /// </summary>
        private bool sortOrderSystemLogInfo = false;

        /// <summary>
        /// 系统日志列表框操作对象
        /// </summary>
        private ListViewController lvSystemLogInfoController;
        #endregion

        #region 事件响应
        /// <summary>
        /// 点击按钮初始化列表
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnListView_Click(object sender, EventArgs e)
        {
            try
            {
                this.InitializeColumnHeader();

                this.ShowInfo();
            }
            catch (Exception ex)
            {
                //异常截图(全屏)
                LogController.PrintScreen();
                log.Error(ex.Message);
            }
        }

        /// <summary>
        /// 用户列表排序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lvTest_ColumnClick(object sender, ColumnClickEventArgs e)
        {
            try
            {
                SortShowInfo(e.Column);//排序
            }
            catch (Exception ex)
            {
                //异常截图(全屏)
                LogController.PrintScreen();
                log.Error(ex.Message);
            }
        }
        #endregion

        #region 操作方法
        /// <summary>
        /// 初始化窗体
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void InitializeColumnHeader()
        {
            try
            {
                lvTest.FullRowSelect = true;//全行选中

                SortShowInfo(1);//按照发生时间排序

                lvTest.Columns.Clear();

                ColumnHeader clmDefaultSystemId = new ColumnHeader();
                clmDefaultSystemId.Text = MultiLanguageModel.Launguage_DefaultId;
                clmDefaultSystemId.Width = 0;//不显示
                clmDefaultSystemId.Name = "clmDefaultSystemId";
                lvTest.Columns.Add(clmDefaultSystemId);

                ColumnHeader clmEventTime = new ColumnHeader();
                clmEventTime.Text = "事件时间";
                clmEventTime.Width = 200;
                clmEventTime.Name = "clmEventTime";
                lvTest.Columns.Add(clmEventTime);

                ColumnHeader clmEventDescription = new ColumnHeader();
                clmEventDescription.Text = "事件描述";
                clmEventDescription.Width = 400;
                clmEventDescription.Name = "clmEventDescription";
                lvTest.Columns.Add(clmEventDescription);

                ColumnHeader clmEventType = new ColumnHeader();
                clmEventType.Text = "事件类型";
                clmEventType.Width = Screen.GetWorkingArea(this).Width - 600 - 4;
                clmEventType.Name = "clmEventType";
                lvTest.Columns.Add(clmEventType);
            }
            catch (Exception ex)
            {
                //异常截图(全屏)
                LogController.PrintScreen();
                log.Error(ex.Message);
            }
        }

        /// <summary>
        /// 初始化录像查询结果显示
        /// </summary>
        /// <param name="alarmPlanInfo">报警计划信息</param>
        ///  <param name="alarmInfo">报警信息</param>
        private void ShowInfo()
        {
            try
            {
                if (lvTest.InvokeRequired)
                {
                    MethodInvoker methodInvoker = new MethodInvoker(this.ShowInfo);
                    this.BeginInvoke(methodInvoker, null);
                }
                else
                {
                    //只显示前100个
                    if (lvTest.Items.Count == 100)
                    {
                        lvTest.Items[99].Remove();
                    }

                    lvTest.Items.Clear();

                    for (int i = 0; i < 10; i++)
                    {
                        ListViewItem alarmInfoItem = new ListViewItem();
                        alarmInfoItem.SubItems.Add(DateTime.Now.ToString());

                        alarmInfoItem.SubItems.Add("测试" + i);
                        alarmInfoItem.SubItems.Add("测试" + i);

                        lvTest.Items.Add(alarmInfoItem);
                    }

                    for (int i = 0; i < lvTest.Items.Count; i++)
                    {
                        if (i % 2 == 0)
                        {
                            lvTest.Items[i].BackColor = ColorModel.ProductColorThird;
                        }
                        else
                        {
                            lvTest.Items[i].BackColor = ColorModel.ProductColorSecond;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                //异常截图(全屏)
                LogController.PrintScreen();
                log.Error(ex.Message);
            }
        }

        /// <summary>
        /// 系统日志信息排序
        /// </summary>
        /// <param name="columnNumber">按照第几列排序</param>
        private void SortShowInfo(int columnNumber)
        {
            try
            {
                lvSystemLogInfoController = new ListViewController();

                if (sortOrderSystemLogInfo == false)
                {
                    sortOrderSystemLogInfo = true;
                    lvSystemLogInfoController.SortOrder = SortOrder.Descending;
                }
                else
                {
                    sortOrderSystemLogInfo = false;
                    lvSystemLogInfoController.SortOrder = SortOrder.Ascending;
                }

                lvSystemLogInfoController.SortColumn = columnNumber;
                this.lvTest.ListViewItemSorter = lvSystemLogInfoController;
            }
            catch (Exception ex)
            {
                //异常截图(全屏)
                LogController.PrintScreen();
                log.Error(ex.Message);
            }
        }

        #endregion
排序类:
<pre name="code" class="csharp">    public class ListViewController : IComparer
    {
        #region 列表框排序
        private int sortColumn;
        /// <summary>
        /// 获取或设置按照哪一列排序.
        /// </summary>
        public int SortColumn
        {
            set
            {
                sortColumn = value;
            }
            get
            {
                return sortColumn;
            }
        }

        private SortOrder sortOrder;
        /// <summary>
        /// 获取或设置排序方式.
        /// </summary>
        public SortOrder SortOrder
        {
            set
            {
                sortOrder = value;
            }
            get
            {
                return sortOrder;
            }
        }

        /// <summary>
        /// 重写IComparer接口.
        /// </summary>
        /// <param name="x">要比较的第一个对象</param>
        /// <param name="y">要比较的第二个对象</param>
        /// <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>
        public int Compare(object x, object y)
        {
            ListViewItem lvX = (ListViewItem)x;
            ListViewItem lvY = (ListViewItem)y;

            CaseInsensitiveComparer ObjectCompare = new CaseInsensitiveComparer();

            int mResult = ObjectCompare.Compare(lvX.SubItems[sortColumn].Text, lvY.SubItems[sortColumn].Text);

            // 根据上面的比较结果返回正确的比较结果
            if (sortOrder == SortOrder.Ascending)
            {
                return mResult;
            }
            else if (sortOrder == SortOrder.Descending)
            {
                return (-mResult);
            }
            else//相等
            {
                return 0;
            }
        }
        #endregion
    }


 
  
详情参考FrmControl.ListView.cs文件
Demo下载地址: http://pan.baidu.com/s/1eQqxqCi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值