设为首页 加入收藏

TOP

22.1.11 添加第二个对话框(1)
2013-10-07 12:45:58 来源: 作者: 【 】 浏览:67
Tags:22.1.11 添加 第二 对话

22.1.11  添加第二个对话框(1)

添加设置Euromillions彩票极限值的第二个对话框应该很容易;该过程与添加第一个对话框的过程是相同的。按下Ctrl+Shift+A组合键,显示出Add New Item对话框,然后选择UI类别和Windows Form模板,在本项目中创建一个新的窗体,其名称应该是EuroLimitsDialog。可以采用类似于设定第一个对话框的方式设定该对话框的属性值,见表22-2。

表  22-2

< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   

FormBorderStyle

FixedDialog

ControlBox

False

MinimizeBox

False

MaximizeBox

False

Text

Set Euromillions Limits


接下来,可以给该对话框窗体添加OK和Cancel按钮。将这两个按钮的Text属性值分别设置为OK和Cancel,将其(Name)属性值分别设置为euroOK和euroCancel。还应该将DialogResult属性值设置为OK和Cancel。定义过这两个按钮之后,可以返回到对话框窗体的属性窗口中,将AcceptButton和CancelButton属性值分别设置为euroOK和euroCancel。设置窗体的AcceptButton属性值为euroOK。

为了获得更多控件的使用经验,我们打算放弃应用程序中的一致性,不像在第一个对话框中所做的那样,使用ListBox控件来处理输入问题。在第二个对话框中,不仅需要为5个数值的那组号码提供上限和下限,还需要为两个星值的那组号码提供上限和下限。其实现不会非常雅致,但为了尽可能多地使用不同种类的控件,我们将为前者使用NumericUpDown控件,为后者使用ComboBox控件。如图22-20所示,可以给对话框窗体添加这两个控件以及相关的Label控件,并使每组控件位于一个GroupBox控件内。显然,需要首先添加GroupBox控件,然后再把其他控件放入其中。

如图22-20所示,可以设置每个Label控件的Text属性的值。标签的字体大小已经被改为9磅。为了标识每个组合框内控件的功能,上面组合框的Text属性值已经被设置为Set Values Limits,下面组合框的Text属性值是Set Stars Limits。在代码中不会访问这两个GroupBox对象,因此它们的(Name)属性值是什么并不重要。

上面组合框中的两个NumericUpDown控件的(Name)属性值应该被设置为lowerValuesLimits和upperValuesLimits。可以通过设置Maximum和Minimum属性的值,设置这两个控件显示的数值。左边lowerValuesLimits控件的Maximum和Minimum属性值应该分别是45和1,而右边upperValuesLimits控件的Maximum和Minimum属性值应该分别是49和5。可以把upperValuesLimits控件的Value属性值设置为49,这是该控件中最初显示的数值。如果还将各个NumericUpDown控件的ReadOnly属性值设置成了True,那么将禁止从键盘上输入数值。在这里对NumericUpDown控件的使用非常简单。通过设置Increment属性值,可以改变向上和向下的增量。Increment属性属于Decimal类型,因此也可以将其设置为非整数值。

可以把下面组合框中的两个ComboBox控件的(Name)属性值设置为lowerStarsLimits和upperStarsLimits。可以非常容易地输入在ComboBox中显示的数值。单击最左边ComboBox控件右上方的小箭头,显示出如图22-21所示的菜单。

 
(点击查看大图)图  22-20
 
(点击查看大图)图  22-21
选择该菜单底部的Edit Items菜单项,显示出如图22-22所示的String Collection Editor对话框窗口。
 
(点击查看大图)图  22-22

图22-22显示出为左边的ComboBox控件输入的数值。可以为右边的ComboBox控件输入从2~9(包括2和9)的数值。

对本应用程序来说,ComboBox不是理想的控件,因为该控件不仅允许从列表中选择,还允许从键盘上输入;我们希望极限值只能从列表中选择。该控件之所以得名ComboBox,是因为它组合了ListBox控件的功能和TextBox控件的功能,前者允许从列表中选择,而后者提供文本输入功能。

1. 获得来自对话框控件的数据

从控件中取回极限值的方法基本上与处理设置Lotto彩票极限值的对话框时所用的方法相同。首先,可以给EuroLimitsDialog类添加一些新的数据成员,容纳用户设置的极限值:

  1. private:  
  2. int lowerValuesLimit;  
  3. int upperValuesLimit;  
  4. int lowerStarsLimit;  
  5. int upperStarsLimit; 

为稳妥起见,最好在类的构造函数中初始化这些成员:

  1. EuroLimitsDialog(void)  
  2. :lowerValuesLimit(1)  
  3. ,upperValuesLimit(50)  
  4. ,lowerStarsLimit(1)  
  5. ,upperStarsLimit(9)  
  6. {  
  7. InitializeComponent();  
  8. //  
  9. //TODO: Add the constructor code here  
  10. //  

还需要在该对话框类中定义一些公有属性,以便可以从应用程序窗口对象中访问极限值:

  1. public:  
  2. property int LowerValuesLimit  
  3. {  
  4. int get() { return lowerValuesLimit; }  
  5.  
  6. void set(int limit)  
  7. {  
  8. lowerValuesLimit = limit;  
  9. lowerValuesLimits->Value = limit;  
  10.                               // Set as selected in NumericUpDown  
  11. }  
  12. }  
  13. property int UpperValuesLimit  
  14. {  
  15. int get() { return upperValuesLimit; }  
  16.  
  17. void set(int limit)  
  18. {  
  19. upperValuesLimit = limit;  
  20. upperValuesLimits->Value = limit;  
  21.                                // Set as selected in NumericUpDown  
  22. }  
  23. }  
  24. property int LowerStarsLimit  
  25. {  
  26. int get() { return lowerStarsLimit; }  
  27.  
  28. void set(int limit)  
  29. {  
  30. lowerStarsLimit = limit;  
  31. lowerStarsLimits->SelectedItem = limit;  
  32.                                      // Set as selected in ComboBox  
  33. lowerStarsLimits->SelectedIndex = // Set index for selected item  
  34. lowerStarsLimits->FindString(limit.ToString());  
  35. }  
  36. }  
  37.  
  38. property int UpperStarsLimit  
  39. {  
  40. int get() { return upperStarsLimit; }  
  41.  
  42. void set(int limit)  
  43. {  
  44. upperStarsLimit = limit;  
  45. upperStarsLimits->SelectedItem = limit;  
  46.                                    // Set as selected in ComboBox  
  47. upperStarsLimits->SelectedIndex = // Set index for selected item  
  48. upperStarsLimits->FindString(limit.ToString());  
  49. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇22.1.11 添加第二个对话框(2) 下一篇22.1.5 Winning应用程序的操作

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: