GroupBox控件常常用于逻辑地组合一组控件,如RadioButton 及 CheckBox控件,显示一个框架,其上有一个标题。

组框的用法非常简单,把它拖放到窗体上,再把所需的控件拖放到组框中即可(但其顺序不能颠倒--不能把组框放在已有的控件上面)。其结果是父控件是组框,而不是窗体,所以在任意时刻,可以选择多个RadioButton。但在组框中,一次只能选择一个RadioButton。

这里需要解释一下父控件和子控件的关系。把一个控件放在窗体上时,窗体就是该控件的父控件,所以该控件是窗体的一个子控件。而把一个GroupBox放在窗体上时,它就成为窗体的一个子控件。而组框本身可以包含控件,所以它就是这些控件的父控件,其结果是移动GroupBox时,其中的所有控件也会移动。

把控件放在组框上的另一个结果是可以改变其中所有控件的某些属性,方法是在组框上设置这些属性。例如,如果要禁用组框中的所有控件,只需把组框的Enabled属性设置为false即可。

下面用一个示例说明GroupBox控件的用法。

试试看:RadioButton和CheckBox示例

下面修改用于说明文本框用法的TextBoxTest示例。在该示例中,惟一可能的职业是程序员。下面不强迫用户填写程序员,而是把这个文本框改成复选框。为了说明RadioButton的用法,我们将要求用户再提供一条信息:性别。

把文本框示例改为:

(1) 删除labelOccupation 标签和文本框textBoxOccupation。

(2) 添加一个CheckBox、一个GroupBox和两个RadioButton控件,并命名这些新控件,如图15-12所示。注意与前面使用的其他控件不同,GroupBox控件位于Toolbox面板的Containers选项卡上。

图  15-12

(3) RadioButton 和 CheckBox控件的Text属性应与该控件名相同(前3个字符不算)。CheckBox的Text属性应是Sex。

(4) 把checkBoxProgrammer复选框的Checked属性设置为true。注意CheckState属性自动改为Checked。

(5) 把radioButtonMale 或 radioButtonFemale的Checked属性设置为true。注意不能把它们两个同时设置为true。否则,另一个RadioButton的值会自动变为false。

对这个示例的可见部分不再需要更多的修改,但代码要进行许多修改。首先,需要删除所有对已删除文本框的引用。进入代码,完成下述步骤。

(1) 在窗体的构造函数中,删除引用textBoxOccupation 的两行代码,这包括对Validating事件的订阅,以及把Tag属性设置为false的代码行。

(2) 彻底删除textOccupation_Validating()方法。

textBox_TextChanged方法可以用于测试调用的控件是否为 textBoxOccupation文本框。我们现在知道该控件并不是textBoxOccupation文本框(因为已删除了它),所以要修改该方法,即删除else if块,并修改if测试代码,如下所示:

private void textBox_TextChanged(object sender, System.EventArgs e){// Cast the sender object to a TextboxTextBox tb = (TextBox)sender;
   // Test if the data is valid and set the tag's background// color accordingly.if (tb.Text.Length == 0){tb.Tag = false;tb.BackColor = Color.Red;}else{tb.Tag = true;tb.BackColor = SystemColors.Window;}
   // Call ValidateOK to set the OK buttonValidateOK();}

在ValidateOK()方法中检查已删除的文本框的值,彻底删除检查代码,则最终代码变成:

private void ValidateOK(){// Set the OK button to enabled if all the Tags are truethis.buttonOK.Enabled = ((bool)(this.textBoxAddress.Tag) &&  (bool)(this.textBoxAge.Tag) &&  (bool)(this.textBoxName.Tag));}

这里使用的是复选框,而不是文本框,所以用户不会输入无效的信息,因为用户要么是一个程序员,要么不是。

我们也知道用户要么是男性,要么是女性,因为前面把一个RadioButton的属性设置为true,这样用户就不会选择无效的值。因此,下面只需要修改帮助文本和输出。我们在按钮事件处理程序中完成它:

private void buttonHelp_Click(object sender, System.EventArgs e){// Write a short descrption of each TextBox in the Output TextBoxstring output;output = "Name = Your name\r\n";output += "Address = Your address\r\n";output += "Programmer = Check 'Programmer' if you are a programmer\r\n";output += "Sex = Choose your sex\r\n";output += "Age = Your age";// Insert the new textthis.textBoxOutput.Text = output;}

下面只剩下修改帮助文本了,所以不要对帮助方法感到惊讶。在OK方法中,它显得稍微有趣一点:

private void buttonOK_Click(object sender, System.EventArgs e){// No testing for invalid values are made, as that should// not be neccessary

string output;
   // Concatenate the text values of the four TextBoxesoutput = "Name: " + this.textBoxName.Text + "\r\n";output += "Address: " + this.textBoxAddress.Text + "\r\n";output += "Occupation: " + (string)(this.chkProgrammer.Checked ? "Programmer" : "Not a programmer") + "\r\n";output += "Sex: " + (string)(this.radioButtonFemale.Checked ? "Female" : "Male") + "\r\n";output += "Age: " + this.textBoxAge.Text;
   // Insert the new textthis.textBoxOutput.Text = output;}

在突出显示的代码中,第一行打印出了用户的职业。考察一下复选框的Checked属性,如果它是true,就写入字符串"Programmer",如果它是false,就填写"Not a programmer"。

第二行代码检查单选按钮radioButtonFemale。如果该控件的Checked属性是true,则该用户是一位女性。如果它是false,则该用户是一位男性。在启动程序时,可以不选中任何一个单选按钮,但因为是在设计期间选择了其中一个单选按钮,所以可以肯定总是会选中其中一个单选按钮

现在运行示例,得到如图15-13所示的结果。

 
图  15-13

GroupBox控件相关推荐

  1. winform groupbox控件放到窗体中间位置

    1. 在Form中放一个控件,让其在启动时始终居中 int gLeft = this.Width / 2 - groupControl1.Width / 2; int gTop = this.Heig ...

  2. GroupBox控件拖入FlowLayoutPanel控件之后消失

    GroupBox控件拖入FlowLayoutPanel控件之后消失 在C#Winform当中添加控件 GroupBox控件拖入FlowLayoutPanel控件之后消失不见,其实是GroupBox控件 ...

  3. GroupBox 控件 RadioButton控件

    7.GroupBox 控件 GroupBox控件又称为分组框,它在工具箱中的图标是 .该控件常用于为其他控件提供可识别的分组,其典型的用法之一就是给RadioButton控件分组.可以通过分组框的Te ...

  4. 遍历groupBox控件的每一个子控件的写法

    简单如下: foreach(Control con in groupBox3.Controls) con.Enabled=true;

  5. C# Winform 带优美外观的UserControl控件GroupBox

    写在前面:如果大家觉得.Net自带的GroupBox控件太差了,样子很不美观,而想用.Net强大的自定义功能来实现定制控件,如,在GroupBox的Title那里加个Button形状的东西,给Grou ...

  6. WPF 基础控件之 GroupBox样式

    其他基础控件 1.Window 2.Button 3.CheckBox 4.ComboBox 5.DataGrid 6.DatePicker 7.Expander GroupBox控件修改Style需 ...

  7. .Net(C#)自定义WinForm控件之小结篇(强力推荐)

    强力推荐的网站:http://www.myfirm.cn/News/dotNetGUIAPI/ 本文转载:http://www.myfirm.cn/News/dotNetUserInterface/2 ...

  8. C#常用控件的属性以及方法(转载)

    -----以前看别人的,保存了下来,但是忘了源处,望见谅. C#常用控件属性及方法介绍 目录 1.窗体(Form) 2.Label (标签)控件 3.TextBox(文本框)控件 4.RichText ...

  9. C#控件常用设计整理大全

    1.常用属性  (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体. (2)WindowState属性:用来获取或设置窗体的窗口状态. 取值有三种: Normal ...

最新文章

  1. 所有接口添加plist文件的写法 swift
  2. 1093 Count PAT‘s
  3. Mac安装MySql 5.7.11
  4. 647. Palindromic Substrings
  5. Properties的使用
  6. SLAM GMapping(4)SLAM处理器
  7. 1152Google Recruitment
  8. OpenCV图像处理(0)——文件夹批量读取文件
  9. FZU - 1601 - Alibaba's treasures
  10. Cron在线表达式生成器
  11. 8个国外开放的硕博论文、期刊、数据库下载网站-转
  12. 利用Python爬取网页内容
  13. php面试会考计算机网络,计算机网络常见面试题整理
  14. PS怎么做抽象流彩油画丙烯画效果
  15. 裸金属服务器是什么?裸金属服务器能用来干啥
  16. 服务器装机选哪个系统好,服务器该装08系统好还是03系统好?
  17. sublime text 软件上手指南
  18. 决策树(2.回归树)
  19. 免费计算机论文 阅读,计算机方面的论文
  20. java 时间before_Java中的即时isBefore()方法

热门文章

  1. 2017.5.8 文化之旅 思考记录
  2. linux sed面试题,【2021最新版】Linux面试题总结(48道题含答案解析)
  3. 【英语学习】【Level 08】U01 Let's Read L2 Of fairies and princesses
  4. C++开源矩阵计算工具——Eigen的简单用法(三)
  5. python pip有什么用_pip的介绍和使用
  6. html5 输入用户名和密码登陆网址,192.168.5.1路由器登录入口用户名和密码
  7. webview 转义字符_iOS中webView加载URL需要处理特殊字符
  8. Cap04_项目整体管理
  9. 关于maven pom
  10. IOS 代码控制控件始终居中