WM中使用C#自已绘制的一个列表控件

使用C#做WM客户端时,发现,没有一个像样的信息列表展示的控件,ListView虽然有五种类型,可是依然非常不给力。

一、控件外观:

 

控件的外观是我自己设计,没有得到美工的支持,所以可能会有点丑。但大致就这样。

图片可放置公司的LOGO,或是信息的示意图,或是用户头像。也可以缺省。

标题有暴露的属性,可以设置是否以两行来显示标题,并且会根据宽度自动截字,截字的同时会加上"…"。

显示时间位置,可放置其他信息。


二、控件的事件

当选中列表的行时,外观如下:

 

控件在得到焦点或是单击时(得到焦点与单击事件的触发是不同的),会触发ListSelect事件;失去焦点时,会触发UnListSelect事件。

事件的触发是支持使用上下键的,所以控件可以用于触摸屏或是非触摸屏。

 

因有的产品的需求是要求在列表行放上操作按钮的,但这个控件没有实现,不过可以在触发ListSelect事件时,改变菜单的选项,如下图:

 

三、源码下载:

例子源码下载

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
QQ好友例表控件 带实例和源码 //1. 属性列表: // SelectionMode 组件条目的选择类型,即多选(Multiple)、单选(Single) // Rows 列表显示总共多少行 // Selected 检测条目是否被选 // SelectedItem 返回的类型是ListItem,获得列表被选择的条目 // Count 列表条目的总数 // SelectedIndex 列表被选择项的索引值 // Items 泛指列表的所有项,每一项的类型都是ListItem //2. 取列表被选的值 // ListBox.SelectedValue //3. 动态的添加列表的项: // ListBox.Items.Add("所要添加的项"); //4. 移出指定项: // //首先判断列表的项是否大于0 // If(ListBox.Items.Count > 0 ) // { ////移出选择的项 //ListBox.Items.Remove(ListBox.SelectedItem); // } //5. 清空所有项: // //首先判断列表的项是否大于0 // If(ListBox.Items.Count > 0 ) // { ////清空所有项 //ListBox.Items.Clear(); // } //6. 列表框可以一次选择多项: // 只需设置列表框的属性 SelectionMode="Multiple",按Ctrl可以多选 //7. 两个列表框联动,即两级联动菜单 // //判断第一个列表被选的值 // switch(ListBox1.SelectValue) // { ////如果是"A",第二个列表就添加这些: //case "A" // ListBox2.Items.Clear(); // ListBox2.Items.Add("A1"); // ListBox2.Items.Add("A2"); // ListBox2.Items.Add("A3"); ////如果是"B",第二个列表就添加这些: //case "B" // ListBox2.Items.Clear(); // ListBox2.Items.Add("B1"); // ListBox2.Items.Add("B2"); // ListBox2.Items.Add("B3"); // } //8. 实现列表项的移位 // 即:向上移位、向下移位 // 具体的思路为:创建一个ListBox对象,并把要移位的项先暂放在这个对象。 // 如果是向上移位,就是把当前选定项的的上一项的值赋给当前选定的项,然后 // 把刚才新加入的对象的值,再附给当前选定项的前一项。 // 具体代码为: // //定义一个变量,作移位用 // index = -1; // //将当前条目的文本以及值都保存到一个临时变量里面 // ListItem lt=new ListItem (ListBox.SelectedItem.Text,ListBox.SelectedValue); // //被选的项的值等于上一条或下一条的值 // ListBox.Items[ListBox.SelectedIndex].Text=ListBox.Items[ListBox.SelectedIndex + index].Text; // //被选的项的值等于上一条或下一条的值 // ListBox.Items[ListBox.SelectedIndex].Value=ListBox.Items[ListBox.SelectedIndex + index].Value; // //把被选项的前一条或下一条的值用临时变量的取代 // ListBox.Items[ListBox.SelectedIndex].Test=lt.Test; // //把被选项的前一条或下一条的值用临时变量的取代 // ListBox.Items[ListBox.SelectedIndex].Value=lt.Value; // //把鼠标指针放到移动后的那项上 // ListBox.Items[ListBox.SelectedIndex].Value=lt.Value; //9. 移动指针到指定位置: // (1).移至首条 // //将被选项的索引设置为0就OK了 // ListBox.SelectIndex=0; // (2).移至尾条 // //将被选项的索引设置为ListBox.Items.Count-1就OK了 // ListBox.SelectIndex=ListBox.Items.Count-1; // (3).上一条 // //用当前被选的索引去减 1 // ListBox.SelectIndex=ListBox.SelectIndex - 1; // (4).下一条 // //用当前被选的索引去加 1 // ListBox.SelectIndex=ListBox.SelectIndex + 1; //this.ListBox1.Items.Insertat(3,new ListItem("插入在第3行之后项","")); //this.ListBox1.Items.Insertat(index,ListItem) //ListBox1.Items.Insert(0,new ListItem("text","value"));
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值