声明:
- 本博客为原创博客,主要讲述使用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