设为首页 加入收藏

TOP

22.1.14 响应上下文菜单(3)
2013-10-07 12:49:08 来源: 作者: 【 】 浏览:74
Tags:22.1.14 响应 上下文 菜单

22.1.14  响应上下文菜单(3)

首先定义了两个数组变量,一个用来存储按钮,另一个用来存储按钮上的数值。必须在这里声明这两个数组,因为它们是在某个if语句块内创建的,而我们需要在if语句块外部访问它们。

前3个if语句块确定是哪个组合框包含被右击而使上下文菜单打开的按钮。这3个if语句块内的处理基本相同,但创建的数组是不同的。按钮数组是根据contextButton所属的那一组按钮的句柄变量创建的。然后,按钮数组的句柄被存入theButtons变量,从而使该数组可以在外部作用域中访问。接下来调用前面添加的GetButtonValues()函数,返回包含按钮上整数值的数组。最后,在if块内设置对话框对象的3个属性,并调用其SetLabelText()函数,根据适用的极限值设置标签文本。contextButton必定属于3个组合框之一,因为只有组合框内的按钮才能使上下文菜单弹出。

已经执行过某个if块之后,在第四条if语句的条件中通过调用对话框的ShowDialog()函数使之显示出来。如果ShowDialog()函数返回::DialogResult::OK,就执行该if块内的代码。在该代码中,首先通过比较contextButton句柄与theButtons数组中的句柄,确定哪一个按钮上的数值应该被替换。一旦找到匹配项,就用新的value代替values数组中相应的元素,并退出循环。在对values数组进行排序之后,更新theButtons数组中各个按钮的Text属性,至此任务完成。

Form1类中GetButtonValues()函数的实现如下所示:

  1. // Creates an array of button values from an array of buttons  
  2. array<int>^ GetButtonValues(array<Button^>^ buttons)  
  3. {  
  4. array<int>values = gcnew array<int>(buttons->Length);  
  5. for(int i = 0 ; i<values->Length ; i++)  
  6. values[i] = Int32::Parse(buttons[i]->Text);  
  7. return values;  

在该函数中创建一个整数数组values,其长度与作为实参传递进来的按钮句柄数组相同。然后,用与按钮的Text属性返回的字符串等价的int类型整数填充values数组,并返回该数组的句柄。

再次编译该项目之后,我们应该得到一个功能完整的应用程序。可以生成许许多多数值范围受约束或不受约束的彩票记录,还可以选择为某一次产生的记录在个别按钮上生成新的随机数,或者直接输入新的数值。该程序始终工作正常,但从来没有中过一次奖。当然,正确运行才是衡量成功的标准。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇22.1.13 处理按钮单击事件 下一篇22.1.14 响应上下文菜单(2)

评论

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