文章类型: .NET
关键词: C#,Winform,ListView,鼠标移动,ToolTip,动态,显示,位置,信息
内容摘要:

Winform中ListView鼠标移动使用ToolTip动态显示信息

2015/7/21 16:05:15    来源:apple    阅读:

在做一个酒店管理系统的时候用到了ListView,是否能够当鼠标移动到某一个房价的时候给出该房间的信息呢?这时候可以考虑使用ToolTip控件显示提示信息。

 可以首先在ListViewItem的对象中保存房价信息,代码如下:

/// <summary>
        /// 树节点变化,加载对应房间类型的房间信息。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tvRoom_AfterSelect(object sender, TreeViewEventArgs e)
        {
            toolTip1.RemoveAll();

            if (this.tvRoom.SelectedNode.Level == 0)
            {
                return;
            }
            int roomTypeID = Convert.ToInt32(this.tvRoom.SelectedNode.Tag);
            IList<Room>rooms = RoomManager.GetRoomList("", roomTypeID.ToString());
            this.lvRooms.Items.Clear();
            foreach (Room rm in rooms)
            {
                ListViewItem item = new ListViewItem();
                item.Text = rm.RoomID.ToString();
                if (rm.RoomStateID == 1)
                {
                    item.ImageIndex = 0;
                }
                else if (rm.RoomStateID == 2)
                {
                    item.ImageIndex = 1;
                }               
                item.Tag = rm;            
                this.lvRooms.Items.Add(item);
            }
        }

接下来在ListView中鼠标移动时使用ToolTip动态显示信息的实现步骤如下,

1、设置窗体的成员变量,数据类型为ListViewItem

ListViewItem oldItem = null;


2、添加ListView的MouseMove事件 lvRooms_MouseMove(object sender, MouseEventArgs e)

根据鼠标的当前位置得到ListViewItem项

ListViewItem lvi = this.listView.GetItemAt(e.X, e.Y);

3、判断鼠标当前的位置是否有得到了的ListViewItem的对象,如果为空或者与原来保存的oldItem是同一个对象,则返回(不再重复显示该ListViewItem的对象的房价信息),否则对于得到的新的ListViewItem对象获取其保存的信息通过ToolTip提示控件显示出来,且给出了显示位置(该位置相对于当前ListViewItem对象的正下方,可以根据自己的需要进行调整)。

if (item == null || item==oldItem)
{
    return;
}
else
{
    oldItem = item;
    Room rm = (Room)item.Tag;
    string mytootip = "房间状态:" + rm.RoomStateName + "\r\n"
            + "房间描述:" + rm.Description + "\r\n"
                + "床位:" + (rm.BedNum - rm.GuestNum);


    toolTip1.Show(mytootip, this.lvRooms, item.Position.X + 10, item.Position.Y + 35);
}

以上,问题解决。下面给出本文的案例源代码下载地址

酒店管理系统 本文案例源代码 下载(提取码:f325)

↑ 上一篇文章:适用于各种主流浏览器的JS弹出一个相对位置的浮动层 关键词:javascript,JS,浮动层,div,各种浏览器,.. 发布日期:2015/7/20 17:37:30
↓ 下一篇文章:使用TreeView控件来显示解析出来Xml文件数据的动态加载 关键词:C#,WinForm,TreeView,Xml,XML文.. 发布日期:2015/7/22 12:08:46
相关文章:
使用TreeView控件来显示解析出来Xml文件数据的动态加载 关键词:C#,WinForm,TreeView,Xml,XML文件,动态,加载,动态生成控件 发布日期:2015-07-22 12:08
c# WinForm 中英文智能提示 关键词:c#,WinForm,中英文,智能提示 发布日期:2016-01-21 11:58
C#的WinForm中回车键事件写法 关键词:C#,Winform,回车键,enter,事件,写法,KeyCode,KeyValue,13 发布日期:2016-01-26 21:05
相关目录:.NET
我要评论
正在加载评论信息......