65.9K
CodeProject 正在变化。 阅读更多。
Home

电平指示器和自定义消息框

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.17/5 (6投票s)

2006年2月1日

6分钟阅读

viewsIcon

51322

downloadIcon

2227

使用 C# 2005 控件库,包含两个控件:一个液位计/指示器和一个自定义消息框控件。

Sample Image - JemControls.png

引言

我当时正在开发一个销售点应用程序,并意识到以图形方式显示库存是一个好主意,所以我尝试为此开发一个控件。需要根据液位进行一些颜色变化,这样用户就可以一目了然地知道库存是否充足、略低还是严重不足。当达到给定值时的一些动画(“流动”)并非坏事 :),所以我添加了它。在我完全美化了我的应用程序后,我意识到“硬”外观的微软消息框就像“离水的鱼”一样,我的软件中,消息框变得很有用。但因为我们离不开消息框,所以我必须做一个来匹配我的界面,于是我做了。我必须说,因为这些是为我的应用程序制作的,虽然它们很灵活,但会添加更多功能,使其更加灵活。这将在 2.0 版本中很快实现。

使用代码

使用这些控件非常简单。您所需要做的就是引用项目(如果您的解决方案中使用源代码)或引用 .dll。在 Visual Studio 2005 中,这些控件将出现在“工具箱”的“JemControls V1.0 Components”下。将其中任何一个拖到窗体上,然后像普通控件一样使用它。对于消息框,请记住将其可见性属性设置为 FALSE,即使不这样做也不会有任何影响。现在让我们详细介绍一下。

命名空间:   JemControls (两者都驻留在此命名空间中)

类: JemLevelGuage (用于液位计) 和 JemMessageBox (用于消息框)

枚举:   myMessageButtons, myMessageResult, myMessageType (所有这些枚举都与 JemMessageBox 一起使用)

公共属性: 

      JemMessageBox

            TitleImage     类型: Image    设置和获取

           ButtonImage     类型: Image    设置和获取

            ButtonRollImage     类型: Image    设置和获取

        JemLevelGauge

              LevelHeight     类型: double    获取

              MaxValue     类型: double    设置和获取

              MinValue     类型: double    设置和获取

              LowValue     类型: double    设置和获取

              CriticalValue     类型: double    设置和获取

    公共方法

          JemMessageBox

                public void setBackImages(Image TitleImage, Image ButtonImage, Image ButtonRollImage)

                public void setBackImages(Image TitleImage, Image ButtonImage)

                public void setBackImages(Image TitleImage)

                public myMessageResult Message(string theInformation, string theTitle, myMessageType theType, myMessageButtons theButton)

                public myMessageResult Message(string theInformation, string theTitle, myMessageType theType)

         JemLevelGauge

                  public void setNewValue(string val)

                  public void setNewValue(double val)

描述

JemMessageBox

所有属性都是图像,它们的名称表明了它们将放在哪里。图像最终将被拉伸到控件上,请将其添加到设计中。有一个用于标题图片框的图像。标题图片框上没有文字,但它下方是用来美化的。按钮背景图像 ButtonImage 和 ButtonRollImage 分别用于按钮的背景和鼠标进入时的背景。如果没有设置图像,它们将不会很好看,因为我没有提供任何默认图像。我将在 2.0 版本中设置它们。

有两个主要的公共函数用于设置属性和获取消息框的结果。“setBackImages”被重载用于设置各种图像。要从文件将任何图像参数或属性传递过来,您可以使用“System.Drawing.Image.Fromfile(string path)”来加载它。带有两个参数的重载“setBackImages”对滚动按钮使用相同的 buttonImage,因此没有滚动效果,图像保持不变。您可以忽略“setBackImages”方法,而是通过属性传递图像。“Message”方法用于显示消息并返回 myMessageResult 类型的结果,它是一个在“JemControls”命名空间中的枚举。

JemLevelGauge

这里的属性都是 double 类型。LevelHeight 仅给出当前液位计的高度。我将在 2.0 版本中修改它以返回百分比。“maxValue”是液位计可能达到的最大值(双精度,表示 100% 值),默认值为 100。例如,如果您想为七月的天数创建一个液位计。“maxValue”将是 31,“minValue”将是 1。“lowValue”值表示液位计的颜色将变为黄色。“criticalValue”表示液位计的颜色将变为红色。这些颜色实际上是保存为资源的图像,以使其呈现圆润效果。因此,只有三种颜色。如果您不想看到任何颜色,请将其相关值设置为 0。红色表示临界低,黄色表示低,绿色是必不可少的。希望在 2.0 版本中能让事情更灵活。

只有一个公共方法,它被重载了,“setNewValue”,它接受一个 double 或一个字符串。此值将相对于您设置的最大值和最小值将液位计移动到相对位置。

 

关注点

当液位计被放置在组框中时,它会变得很大,我还没有解决这个问题。这可能是组框或控件的某些设置问题,我以后会解决。但是,如果您想让它“出现在”组框内,请将其拖到窗体上,然后使用键盘上的方向键将其移动“进入”组框,用鼠标移动它将使其真正进入。

我还发现,放在控件的窗体加载方法中的代码会在代码被拖放到窗体上时执行。这可能很明显,但对我来说,在我做的时候并不明显,并且在早期给了我一些令人困惑的结果。

布尔变量“firstrun”被“setNewValue”方法用来选择液位图片框的初始高度和底部值。这是因为我意识到 JemLevelGauge 的特定实例的实际值可能是难以捉摸的,也许我没有从正确的事件处理程序中获取。甚至窗体加载也给出了创建时间的值,而不是被拖动的液位计的值——这可能会因为重设大小而改变。因此,当我第一次将液位计值赋给它时,我获取了实际值,然后通过将“firstrun”设置为 false 来不再获取。

历史

这是第一个版本。希望在 2.0 版本中有更多细节。代码也非常简单易懂。享受使用它。

© . All rights reserved.