正在琢磨开发套酒店的客房控制系统,需要做一个客房的实时房态图来显示各个房间的状态信息,这样就能更加形象的表示出信息。
<
备注: 用不同的颜色和图标来表示房间的状态<如:空房 用绿色表示、需要维修的房间 -灰色、开的是钟点房间-用一个钟的小图标放在上面>关键是那个表格要怎样做出来,步骤请详细说明。希望各位高手指点一二,小弟先拜谢。
<
备注: 用不同的颜色和图标来表示房间的状态<如:空房 用绿色表示、需要维修的房间 -灰色、开的是钟点房间-用一个钟的小图标放在上面>关键是那个表格要怎样做出来,步骤请详细说明。希望各位高手指点一二,小弟先拜谢。
控件的属性包括房态,比如干净的空房、脏的空房、脏房等等..用自定义控件程序也好管理。
listView1.LargeImageList=imageList1;
listView1.ShowItemToolTips = true;
ServerConfig sc = new ServerConfig(System.Windows.Forms.Application.StartupPath);
List<XmlElement> list =sc.GetClient();
foreach (XmlElement myele in list)
{
ListViewItem mylvi = new ListViewItem();
mylvi.ImageIndex = 1;
mylvi.Text = myele.InnerText;
mylvi.Name = myele.GetAttribute("IP");
mylvi.ToolTipText = " IP:"+myele.GetAttribute("IP")+"\n名称:"+myele.GetAttribute("Name");
listView1.Items.Add(mylvi);
}以前写的一个小程序..从配置文件里得到需要的加载的图标个数 imageindex 就是imageList1的索引.在imageList1中放入你需要显示的图片状态 通过索引来选择你的状态
今后牵扯到房间扩展,拖动,布局变更,都是控件是最优选择。
房间布局最好写在xml里。 一排几个房间,总共几排,多少个房间一个楼动态加载到窗体某个区域里
根据房间的状态(空房,维修...) 动态加载到panel里面部分代码: #region 动态添加房间 #region 变量
int dj;//可租单间数量
int hb;//可租豪标数量
int pb;//可租普标数量
int tf;//可租套房数量
int srj;//可租三人间数量
int hys;//可租会议室数量 int zf ;//脏房数量
int yzf;//已住房数量
int kzf;//可租房数量
int wxf;//维修房数量 Image kzfImage;//会议室可租房图片
Image wxfImage;//会议室维修房图片
Image yzfImage;//会议室已住房图片
Image zfImage;//会议室赃房图片 Dictionary<string,Label> labels;//控件集合
Dictionary<string, RoomInfo> DiRoomInfos;//房间集合
//入住的房间
List<Label> Rooms;
//所有的入住登记信息
List<HireRoomInfo> hireRoomInfos = (List<HireRoomInfo>)HireRoomInfoManager.GetAllHireRoomInfo();
#endregion /// <summary>
/// 循环添加房间
/// </summary>
public void AddRoom(List<RoomInfo> roomInfos)
{
dj = 0;//单间
hb = 0;//豪标
pb = 0;//普标
tf = 0;//套房
srj = 0;//三人间
hys = 0;//会议室 zf = 0;//脏房
yzf = 0;//已住房
kzf = 0;//可租房
wxf = 0;//维修房 wxfImage = UserHelper.EllipseImage(60, 50, Color.BlueViolet);
kzfImage = UserHelper.EllipseImage(60, 50, Color.Green);
zfImage = UserHelper.EllipseImage(60, 50, Color.LightSlateGray);
yzfImage = UserHelper.EllipseImage(60, 50, Color.DodgerBlue);
Rooms = new List<Label>();
DiRoomInfos = new Dictionary<string, RoomInfo>();
//排序房间
List<RoomInfo> tempRoomInfos = new List<RoomInfo>();
for (int w = 0; w < roomInfos.Count; w++)
{
if (roomInfos[w].RoomType == "议会室")
{
tempRoomInfos.Add(roomInfos[w]);
roomInfos.RemoveAt(w);
w--;
}
}
roomInfos.Sort(new RoomIdComparer());
roomInfos.AddRange(tempRoomInfos); Label lbl;
labels = new Dictionary<string, Label>() ;//房间控件集合
int j = 0;
int k = 0;
this.panel2.Hide();
this.panel2.Controls.Clear();
for (int i = 0; i < roomInfos.Count; i++)
{ DiRoomInfos.Add(roomInfos[i].RoomId.ToString(), roomInfos[i]); lbl = new Label(); if (roomInfos[i].RoomState == "可租房")
{
kzf++;
if (roomInfos[i].RoomType == "议会室")
{ lbl.Image = kzfImage;
}
else
{
lbl.BackColor = Color.Green;
}
if (roomInfos[i].RoomType == "单间")
{
dj++;
}
if (roomInfos[i].RoomType == "豪标")
{
hb++;
}
if (roomInfos[i].RoomType == "普标")
{
pb++;
}
if (roomInfos[i].RoomType == "套房")
{
tf++;
}
if (roomInfos[i].RoomType == "三人间")
{
srj++;
}
if (roomInfos[i].RoomType == "议会室")
{
hys++;
}
lbl.Tag = roomInfos[i].RoomId;//房间号
}
else
{
if (roomInfos[i].RoomType == "议会室")
{
switch (roomInfos[i].RoomState)
{
case "已住房":
yzf++;
lbl.Image = yzfImage;
//已住房设置提示文本
SetClewText(roomInfos, hireRoomInfos, lbl, i);
break;
case "维修房":
wxf++;
lbl.Image = wxfImage;
lbl.Tag = roomInfos[i].RoomId;//房间号
break;
case "小脏房":
zf++;
lbl.Image = zfImage;
lbl.Tag = roomInfos[i].RoomId;//房间号
break;
}
}
else
{
switch (roomInfos[i].RoomState)
{
case "已住房":
yzf++;
lbl.BackColor = Color.DodgerBlue;
//已住房设置提示文本
SetClewText(roomInfos, hireRoomInfos, lbl, i);
break;
case "维修房":
wxf++;
lbl.BackColor = Color.BlueViolet;
lbl.Tag = roomInfos[i].RoomId;//房间号
break;
case "小脏房":
zf++;
lbl.BackColor = Color.LightSlateGray;
lbl.Tag = roomInfos[i].RoomId;//房间号
break;
}
}
}
lbl.AutoSize = false;
lbl.Font = new Font("宋体",9);
lbl.Location = new Point(2, 2);
lbl.Name = "lbl" + j.ToString() + "_" + (i + 1).ToString();
lbl.Size = new Size(60, 50);
lbl.ForeColor = Color.White;
lbl.Text = roomInfos[i].RoomId.ToString();//房间号
lbl.Text += "\r\n" + roomInfos[i].RoomType;//房间类型
lbl.TextAlign = ContentAlignment.MiddleCenter;
//确定位置
lbl.Location = new Point(2 + (k * 65), 2 + (j * 58));
//绑定到一个单击事件
lbl.Click += new System.EventHandler(lblBuy_Click);
//绑定到一个鼠标按下事件
lbl.MouseDown += new MouseEventHandler(lblBuy_MouseDown);
//绑定到一个右键菜单
lbl.ContextMenuStrip = this.cmsSetRoomState;
this.panel2.Controls.Add(lbl);
labels.Add(roomInfos[i].RoomId.ToString(),lbl);//加入集合中
k++;
if ((i + 1) % 10 == 0)
{
j++;
k = 0;
} //添加三个图片框到Label房间控件上
for (int h = 0; h < 3; h++)
{
PictureBox pic = new PictureBox();
pic.Size = new Size(12, 12);
pic.SizeMode = PictureBoxSizeMode.CenterImage;
pic.Name = i.ToString() + "_" + h.ToString();
if (h == 0)
{
pic.Location = new Point(2, 2);
}
if (h == 1)
{
pic.Location = new Point(46, 2);
pic.Name = "pic"; }
if (h == 2)
{
pic.Location = new Point(2, 36); }
pic.BackColor = Color.Transparent;
//pic.BackColor = Color.Red;
lbl.Controls.Add(pic);
}
}
#endregion源码下载