ColorDialog控件
有时需要让用户自定义窗体上的颜色。该颜色可能是窗体自身的颜色或控件的颜色,也可能是文本框中文本的颜色。Visual Basic 2008所提供的ColorDialog控件可以满足这些需求。同样,ColorDialog控件也可以用作一个类,其方法是在代码中声明它,而不是把一个控件拖放到窗体设计器中。
ColorDialog控件允许用户选择48种基本颜色,如图8-11所示。
注意,用户也可以自定义颜色,这给应用程序增加了更多的灵活性。当用户单击Color对话框中的Define Custom Colors按钮时,就可以调整颜色以满足自己的需求,如图8-12所示。
图 8-11 图 8-12
在应用程序中进行这样的定制,可以灵活地给应用程序提供更专业的外观,用户也会很高兴,因为他们可以根据自己的偏好调整应用程序的外观了。
ColorDialog的属性
在深入研究代码之前,先来看一下ColorDialog控件的一些可用属性,如表8-9所示。
表8-9 ColorDialog控件的一些可用属性
属 性 | 说 明 |
AllowFullOpen | 表明用户是否能用对话框自定义颜色 |
AnyColor | 表明对话框是否显示基本颜色组中的所有可用颜色 |
Color | 表明用户所选的颜色 |
CustomColors | 表明显示在对话框中的自定义颜色组 |
FullOpen | 表明当对话框打开时,用来创建自定义颜色的控件是否可见 |
ShowHelp | 表明是否在对话框中显示Help按钮 |
SolidColorOnly | 表明对话框是否限制用户只能选择纯色 |
这个对话框并没有太多的属性,因此它使用起来就比前面那些对话框简单多了。
与其他的对话框控件一样,ColorDialog也包含ShowDialog方法。前面的示例中已经介绍过这个方法,这里就不再讨论了。
8.5.2 使用ColorDialog控件
为显示Color对话框,只需执行它的ShowDialog方法:
ColorDialog1.ShowDialog()
ColorDialog控件返回的DialogResult为OK或Cancel。因而,可以在If…End If语句中使用上面的语句,测试DialogResult的值是否为OK,就像前面的示例那样。
为了获取用户所选的颜色,只要将从Color属性获取的值赋给一个变量,或者支持颜色的控件的任一个属性,比如文本框的ForeColor属性:
txtFile.ForeColor = ColorDialog1.Color
下面的示例继续使用Windows Forms Dialogs项目,让ColorDialog控件显示Color对话框。如果对话框返回DialogResult的值是OK,就改变窗体的背景色。
试一试:使用ColorDialog控件
(1) 打开Windows Forms Dialogs项目中的窗体设计器。
(2) 在窗体上,通过工具箱添加另一个Button控件,设置它的属性,如下所示。
● 将Name设置为btnColor
● 将Anchor设置为Top,Right
● 将Location设置为350, 103
● 将Text设置为Color
(3) 下一步,从工具箱中给项目添加一个ColorDialog控件。该控件会放在窗体下的工作区中,接受这个控件所有的默认值。
(4) 双击Color按钮,在它的Click事件处理程序中,添加如下突出显示的代码:
Private Sub btnColor_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnColor.Click
'Show the Color dialog and if the user clicks the OK button,
'update the background color of the form
If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.BackColor = ColorDialog1.Color
End If
End Sub
(5) 这就是需要添加的所有代码。现在启动项目测试一下对这个项目进行的修改。
(6) 显示出窗体后,单击Color按钮,以显示Color对话框。选择所需要的颜色,或者单击Define Custom Colors按钮,创建一种自定义颜色。选择完颜色后,单击Color对话框中的OK按钮。现在窗体的背景色变成了刚才所选的颜色。
(7) 与Font对话框相似,无需在显示Color对话框之前,设置ColorDialog控件的Color属性。它会自动记住所选的颜色,在再次显示对话框时,就显示用户所选择的颜色。为了测试这一点,再次单击Color按钮,选择的颜色就会被选定。
示例说明
这次,我们不想设置ColorDialog控件的任何属性,跳过这一步,用If…End If语句显示它,以检查从这个对话框的ShowDialog方法返回的DialogResult:
If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
在If…End If语句中,添加必要的代码,改变窗体的BackColor属性。如果用户单击Color对话框中的OK按钮,窗体的背景色就会因下列这行代码而改变。
Me.BackColor = ColorDialog1.Color