在做一个酒店管理系统的时候用到了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);
}以上,问题解决。下面给出本文的案例源代码下载地址