酒店客房实时房态图刷新的问题?

xie19sc 2010-05-25 10:08:21
房态图我用的方法是动态的向panle控件中添加lable,正着手与实现刷新功能的时候出现的点问题.

我用的方法是首先清空panel控件中的所有集合,然后再重新加载一次,这样做是可以,但是不是要想要的

因为这样做每次点刷新就会出现0.5秒的间隔,也就是0.5秒的闪屏,我要的效果不出现闪屏就可以直接刷新

不知道有没有高手做过或者懂得怎么弄,都来帮帮忙, 谢谢。


小弟是菜鸟,刚刚起步的。
...全文
1849 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
monexxfx 2010-10-17
  • 打赏
  • 举报
回复
学习了
太阳丛 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 afeng124 的回复:]
只能说做软件和写程序是两种追求了。
[/Quote]
好有深度啊 !~!~~
afeng124 2010-05-26
  • 打赏
  • 举报
回复
只能说做软件和写程序是两种追求了。
xie19sc 2010-05-26
  • 打赏
  • 举报
回复
其他楼 谢谢你们捧场,小弟分不多, 各位请不要介意。
xie19sc 2010-05-26
  • 打赏
  • 举报
回复
13楼 26楼的 谢谢了你们的方法正是 我需要的, OK。
xie19sc 2010-05-26
  • 打赏
  • 举报
回复
不错不错 初步看了下,果然全是老手。 我先试试看, 在下感激不尽 ....
zhoubupt 2010-05-25
  • 打赏
  • 举报
回复
直接刷新局部
rabbit5 2010-05-25
  • 打赏
  • 举报
回复
web 还是 winForm?

我不太清楚你的需求 ,如果是酒店的房态图,那么房间的位置应该是固定的,没必要清空panel控件的控件,只要把有变化的label的属性修改一下就可以了吧?
捷哥1999 2010-05-25
  • 打赏
  • 举报
回复
为什么不直接通过lable的name找到label,修改lable的text属性?
修改一下昵称 2010-05-25
  • 打赏
  • 举报
回复
可以先隐藏panle控件一段时间 给一个友好的提示, “正在更新...”
xie19sc 2010-05-25
  • 打赏
  • 举报
回复
哪个高手进来帮帮忙,能说的详细点最好,谢谢了。
xie19sc 2010-05-25
  • 打赏
  • 举报
回复
怎么刷
shashengduguzhe 2010-05-25
  • 打赏
  • 举报
回复
直接刷新变更的部分
sxldfang 2010-05-25
  • 打赏
  • 举报
回复

// 按楼主的思路
// 初始化panel
private void button4_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
Label l = new Label();
l.AutoSize = false;
l.Width = 100;
l.Height = 50;
l.BackColor = Color.White;
l.Left = (i % 4) * 110;
l.Top = (i / 4) * 60;
l.Name = "L" + i;
l.Text = "L" + i;
panel1.Controls.Add(l);
}
}

//更新标签上的文字,仅举个例子,操作没问题
private void button5_Click(object sender, EventArgs e)
{
panel1.Controls["L0"].Text = "Good";
panel1.Controls["L5"].Text = "Afternoon";
}
甴曱 2010-05-25
  • 打赏
  • 举报
回复
用Panel绘制主要是考虑一些不确定因素,可以在里面再添加其他控件,以便显示不同的信息。

Good Luck
甴曱 2010-05-25
  • 打赏
  • 举报
回复
效果图:
甴曱 2010-05-25
  • 打赏
  • 举报
回复
发个目前破项目中写的

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace MyControls
{
/// <summary>
/// 房态控件,应用于实时显示房间状态
/// Author:Py
/// </summary>
public class RoomStatePanel : Panel
{
string m_roomno;
[Description("房间号码")]
public string RoomNo
{
get { return m_roomno; }
set
{
m_roomno = value;
label1.Text = value;
}
}

RoomState rs = RoomState.Unknown;
/// <summary>
/// 房态
/// </summary>
[Description("房态")]
public RoomState State
{
get { return rs; }
set { rs = value; }
}

#region 屏蔽Size等属性

[Browsable(false)]
public Size Size
{
get { return base.Size; }
set { base.Size = value; }
}

[Browsable(false)]
public int Width
{
get { return base.Width; }
set { base.Width = value; }
}

public int Height
{
get { return base.Height; }
set { base.Height = value; }
}

#endregion

Label label1 = new Label();

public RoomStatePanel()
: base()
{
BorderStyle = BorderStyle.None;
label1.Location = new Point(8, 8);
label1.AutoSize = true;
label1.BackColor = Color.Transparent;
label1.Font = new Font("黑体", 14.25F, FontStyle.Bold);
label1.ForeColor = Color.White;
Height = 40;
Width = 80;
Margin = new Padding(5);
Controls.Add(label1);
this.SizeChanged += new EventHandler(RoomStatePanel_SizeChanged);
}

/// <summary>
/// 禁止变更大小
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void RoomStatePanel_SizeChanged(object sender, EventArgs e)
{
Height = 40;
Width = 80;
}

#region 重绘

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
BackColor = Color.Transparent;
Graphics g = e.Graphics;
Pen p = new Pen(Color.Black, 1);
Rectangle rect = ClientRectangle;
rect.Location = new Point(2, 2);
rect.Width = ClientRectangle.Width - 4;
rect.Height = ClientRectangle.Height - 4;
switch (State)
{
case RoomState.Dirty:
FillRoundRectangle(g, new SolidBrush(Color.FromArgb(140, 0, 0)), rect, 3);
break;
case RoomState.Immediately:
FillRoundRectangle(g, new SolidBrush(Color.FromArgb(255, 138, 0)), rect, 3);
break;
case RoomState.LodgingClear:
FillRoundRectangle(g, new SolidBrush(Color.FromArgb(0, 174, 0)), rect, 3);
break;
case RoomState.LodgingDirty:
FillRoundRectangle(g, new SolidBrush(Color.FromArgb(0, 109, 0)), rect, 3);
break;
case RoomState.OK:
FillRoundRectangle(g, new SolidBrush(Color.FromArgb(0, 174, 231)), rect, 3);
break;
case RoomState.Service:
FillRoundRectangle(g, new SolidBrush(Color.FromArgb(198, 0, 0)), rect, 3);
break;
case RoomState.Temp:
FillRoundRectangle(g, new SolidBrush(Color.FromArgb(0, 174, 231)), rect, 3);
break;
case RoomState.Unknown:
FillRoundRectangle(g, new SolidBrush(Color.FromArgb(198, 0, 0)), rect, 3);
break;
}
DrawRoundRectangle(g, p, rect, 3);
p.Dispose();
g.Dispose();
e.Graphics.Dispose();
}

void DrawRoundRectangle(Graphics g, Pen pen, Rectangle rect, int cornerRadius)
{
using (GraphicsPath path = CreateRoundedRectanglePath(rect, cornerRadius))
{
g.DrawPath(pen, path);
}
}

void FillRoundRectangle(Graphics g, Brush brush, Rectangle rect, int cornerRadius)
{
using (GraphicsPath path = CreateRoundedRectanglePath(rect, cornerRadius))
{
g.FillPath(brush, path);
}
}

GraphicsPath CreateRoundedRectanglePath(Rectangle rect, int cornerRadius)
{
GraphicsPath roundedRect = new GraphicsPath();
roundedRect.AddArc(rect.X, rect.Y, cornerRadius * 2, cornerRadius * 2, 180, 90);
roundedRect.AddLine(rect.X + cornerRadius, rect.Y, rect.Right - cornerRadius * 2, rect.Y);
roundedRect.AddArc(rect.X + rect.Width - cornerRadius * 2, rect.Y, cornerRadius * 2, cornerRadius * 2, 270, 90);
roundedRect.AddLine(rect.Right, rect.Y + cornerRadius * 2, rect.Right, rect.Y + rect.Height - cornerRadius * 2);
roundedRect.AddArc(rect.X + rect.Width - cornerRadius * 2, rect.Y + rect.Height - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 0, 90);
roundedRect.AddLine(rect.Right - cornerRadius * 2, rect.Bottom, rect.X + cornerRadius * 2, rect.Bottom);
roundedRect.AddArc(rect.X, rect.Bottom - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 90, 90);
roundedRect.AddLine(rect.X, rect.Bottom - cornerRadius * 2, rect.X, rect.Y + cornerRadius * 2);
roundedRect.CloseFigure();
return roundedRect;
}

#endregion

}

/// <summary>
/// 房态
/// </summary>
public enum RoomState
{
/// <summary>
/// OK房
/// </summary>
OK,
/// <summary>
/// 在住干净房
/// </summary>
LodgingClear,
/// <summary>
/// 在住脏房
/// </summary>
LodgingDirty,
/// <summary>
/// 空脏房
/// </summary>
Dirty,
/// <summary>
/// 末知
/// </summary>
Unknown,
/// <summary>
/// 维修房
/// </summary>
Service,
/// <summary>
/// 临时态房
/// </summary>
Temp,
/// <summary>
/// 将到
/// </summary>
Immediately
}
}
garfieldzf 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xie19sc 的回复:]
哪个高手进来帮帮忙,能说的详细点最好,谢谢了。
[/Quote]

关注中。。。。。。。。。。。。。
k05060213 2010-05-25
  • 打赏
  • 举报
回复
帮忙顶
加载更多回复(12)
北京世纪领航科技发展有限公司凭借多年来在酒店、餐饮行业的软件开发、应用和维护方面的知识积累,成功地推出了基于Windows平台的网络版酒店管理软件产品:《酒店通普及版》。该产品以小型酒店、招待所、度假村业务流程管理为导向,具备功能完善、运行稳定、操作简洁、使用方便等特点,深受酒店管理人员和操作人员的欢迎及认可。 主要功能 目前具有模块为:预订管理、接待管理、账务管理、结账管理、客房管理、数据查询、统计报表、统计分析、夜审管理、系统维护、会员管理、电话计费、门锁接口、读二代身份证接口。 系统重要特点 1、价格相对便宜,软件熟悉快,项目实施时间短,系统稳定维护少。 2、系统采用标准Windows形界面,界面风格用户可以根据自己的爱好进行设置。整套系统风格统一,界面整洁美观,设计思路清晰、学习培训简单,操作使用方便,有利于操作员顺利掌握、熟练使用。酒店行业从业人员的流动性特别大,经常更换人员,新的操作员只要在相关人员的指导下,几个小时内就可以学会本系统。 3、系统采用大型数据库,操作数据实时日志记录,防止误操作和操作人员的恶意行为;引入酒店日期概念,保证数据统计的准确性。 4、软件支持现金账、免单账、房帐、挂帐、钟点房结账、和离店结账恢复等,大大方便财务账务的处理。支持多种结账方式:现金、支票、信用卡、代金券和一卡通等。支持各种收费项目的设置和电话自动计费及房费收费时间(半天房、零点房)的任意设置等。 5、支持会员刷卡、储值、积分回报和片管理,可根据会员类型设置各类协议房价。 6、电话计费模块通用性强,可与各类标准程控交换机接口。话费计费标准设置灵活,所有话单实时记入网络服务器,供前台随时查帐和离店统一结账。 7、本软件可以与公司的《洗浴通》桑拿软件和《饮食通》餐饮软件通过酒店专用接口结合使用,达到统一管理桑拿和餐饮的目的。 8、其它主要特点 8.1支持客人生日提醒和回头客提醒。 8.2支持会员卡使用磁卡、ID卡、接触式IC卡及非接触式IC卡,支持是否允许透支消费的控制,支持相关收费项目是否参与积分的设定,支持积分回报的管理。 8.3支持结账单套打设计。 8.4支持同一证件开多房的提醒。 8.5支持押金单结尾内容的自定义,增交金额的辅助计算,关联房间的全部打印,信用卡预授权交押金,消费金额透支提醒等。 8.6支持钟点房价格的灵活设置,房态提醒。 8.7支持房间消费价格的灵活设置及消费项目的统计。 8.8支持操作员明细权限的设置和操作日志的详细记录及检索。 8.9支持客房服务员业绩考核管理。 8.10支持换房记录的查询。 8.11支持客人未结账退房及跑帐管理和提醒。 8.12支持房间特殊服务管理、拾物登记领取、封房管理。 8.13支持离店结账恢复、补打退房账单、离店结账调用房间消费明细。 8.14支持客人资料保密管理,VIP、外籍客人提醒。 8.15支持预订提供准确剩余房数、房态预抵预退的提醒。 8.16支持团队快速入住。 8.17支持房态变化及时刷新提醒。 8.18支持服务员交接班留言管理。 8.19支持预订客人分批入住。 8.20支持其他消费站点挂房帐权限控制。 8.21主界面支持键盘快捷操作。 8.22支持团队成员快速退房及散客联房结账。 8.23支持入住登记直接读取二代身份证快速填写客人入住资料,系统自动提醒客人入住次数、是否处于“黑名单”,显示客人习惯,最近入住房间和房价情况。 8.24支持哑房的管理。
北京世纪领航科技发展有限公司凭借多年来在酒店、餐饮行业的软件开发、应用和维护方面的知识积累,成功地推出了基于Windows平台的网络版酒店管理软件产品:《酒店通普及版》。该产品以小型酒店、招待所、度假村业务流程管理为导向,具备功能完善、运行稳定、操作简洁、使用方便等特点,深受酒店管理人员和操作人员的欢迎及认可。 主要功能 目前具有模块为:预订管理、接待管理、账务管理、结账管理、客房管理、数据查询、统计报表、统计分析、夜审管理、系统维护、会员管理、电话计费、门锁接口、读二代身份证接口。 系统重要特点 1、价格相对便宜,软件熟悉快,项目实施时间短,系统稳定维护少。 2、系统采用标准Windows形界面,界面风格用户可以根据自己的爱好进行设置。整套系统风格统一,界面整洁美观,设计思路清晰、学习培训简单,操作使用方便,有利于操作员顺利掌握、熟练使用。酒店行业从业人员的流动性特别大,经常更换人员,新的操作员只要在相关人员的指导下,几个小时内就可以学会本系统。 3、系统采用大型数据库,操作数据实时日志记录,防止误操作和操作人员的恶意行为;引入酒店日期概念,保证数据统计的准确性。 4、软件支持现金账、免单账、房帐、挂帐、钟点房结账、和离店结账恢复等,大大方便财务账务的处理。支持多种结账方式:现金、支票、信用卡、代金券和一卡通等。支持各种收费项目的设置和电话自动计费及房费收费时间(半天房、零点房)的任意设置等。 5、支持会员刷卡、储值、积分回报和片管理,可根据会员类型设置各类协议房价。 6、电话计费模块通用性强,可与各类标准程控交换机接口。话费计费标准设置灵活,所有话单实时记入网络服务器,供前台随时查帐和离店统一结账。 7、本软件可以与公司的《洗浴通》桑拿软件和《饮食通》餐饮软件通过酒店专用接口结合使用,达到统一管理桑拿和餐饮的目的。 8、其它主要特点 8.1支持客人生日提醒和回头客提醒。 8.2支持会员卡使用磁卡、ID卡、接触式IC卡及非接触式IC卡,支持是否允许透支消费的控制,支持相关收费项目是否参与积分的设定,支持积分回报的管理。 8.3支持结账单套打设计。 8.4支持同一证件开多房的提醒。 8.5支持押金单结尾内容的自定义,增交金额的辅助计算,关联房间的全部打印,信用卡预授权交押金,消费金额透支提醒等。 8.6支持钟点房价格的灵活设置,房态提醒。 8.7支持房间消费价格的灵活设置及消费项目的统计。 8.8支持操作员明细权限的设置和操作日志的详细记录及检索。 8.9支持客房服务员业绩考核管理。 8.10支持换房记录的查询。 8.11支持客人未结账退房及跑帐管理和提醒。 8.12支持房间特殊服务管理、拾物登记领取、封房管理。 8.13支持离店结账恢复、补打退房账单、离店结账调用房间消费明细。 8.14支持客人资料保密管理,VIP、外籍客人提醒。 8.15支持预订提供准确剩余房数、房态预抵预退的提醒。 8.16支持团队快速入住。 8.17支持房态变化及时刷新提醒。 8.18支持服务员交接班留言管理。 8.19支持预订客人分批入住。 8.20支持其他消费站点挂房帐权限控制。 8.21主界面支持键盘快捷操作。 8.22支持团队成员快速退房及散客联房结账。 8.23支持入住登记直接读取二代身份证快速填写客人入住资料,系统自动提醒客人入住次数、是否处于“黑名单”,显示客人习惯,最近入住房间和房价情况。 8.24支持哑房的管理。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧