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 Textbox TextBox 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 button ValidateOK(); }
|
在ValidateOK()方法中检查已删除的文本框的值,彻底删除检查代码,则最终代码变成:
private void ValidateOK() { // Set the OK button to enabled if all the Tags are true this.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 TextBox string 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 text this.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 TextBoxes output = "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 text this.textBoxOutput.Text = output; }
|
在突出显示的代码中,第一行打印出了用户的职业。考察一下复选框的Checked属性,如果它是true,就写入字符串"Programmer",如果它是false,就填写"Not a programmer"。
第二行代码检查单选按钮radioButtonFemale。如果该控件的Checked属性是true,则该用户是一位女性。如果它是false,则该用户是一位男性。在启动程序时,可以不选中任何一个单选按钮,但因为是在设计期间选择了其中一个单选按钮,所以可以肯定总是会选中其中一个单选按钮
现在运行示例,得到如图15-13所示的结果。
|
图 15-13
|
GroupBox控件常常用于逻辑地组合一组控件,如RadioButton 及 CheckBox控件,显示一个框架,其上有一个标题。组框的用法非常简单,把它拖放到窗体上,再把所需的控件拖放到组框中即可(但其顺序不能颠倒--不能把组框放在已有的控件上面)。其结果是父控件是组框,而不是窗体,所以在任意时刻,可以选择多个RadioButton。但在组框中,一次只能选择一个RadioButton。
Group
Box
用于将一组逻辑
控件
布局在一起。
Group
Box
不提供自己的布局。
声明为
Group
Box
子项的项自动成为
Group
Box
的 contentItem 的父项。动态创建的项目需要明确地作为 contentItem 的父级。
如果在
Group
Box
中只使用一个项目,它将调整大小以适应其包含项目的隐式大小。 这使得它特别适合与布局一起使用。
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.
在日常软件中,分组框和组合框也是经常用到的,其中组合框是有一个单行编辑框和一个下拉菜单组成的。
它的值可以通过model , 或者ListModel来进行操作。
然后也可以像单选框复选框一样的来自定义风格。下面就来一起学下把:import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2Recta
1、主要属性
Group
Box
分组框是一个对多个部件进行编组的框架容器,可以带有标题(title属性)、键盘快捷键和复选框(checkable属性),标题可以设置对齐方式(alignment属性),复选框可以设置是否选中(checked属性)。如图:
如果标题有复选框,复选框选中后grou...
Group
Box
(框架)
控件
是C#中用来组织其他
控件
形成一个
控件
组,它的使用方法为【工具箱】-》【所有Windows窗体】(或者是【容器】列表中)-》【
Group
Box
】,拖拽到窗体界面中,再将其他
控件
拖拽到
Group
Box
中就可以形成一个
控件
组。当框架移动时,该
控件
组同时移动,不会产生其他的位移,所以是组织界面的好东西。
它主要有两个属性:Text和Visible。
Text属性代表Grou
在
Group
Box
中可以放置其他布局容器,例如StackPannel。
<
Group
Box
x:Name="
group
Box
" Header="
Group
Box
">
<StackPanel>
<RadioButton Content="1" Margin="10"/>
<RadioButton Content="2" Margin="10"/&
在这个示例中,我们创建了一个
Group
Box
,并设置了它的Header为“这是一个
Group
Box
”。在
Group
Box
中,我们使用了一个StackPanel来放置三个Check
Box
控件
。当我们运行这个程序时,可以看到这三个复选框被放置在一个带有标题的边框内。
除了Header属性之外,
Group
Box
还提供了其他的属性来定制它的外观和行为。例如,你可以设置
Group
Box
的背景、边框颜色、字体样式等。你还可以通过IsEnabled属性来控制
Group
Box
中所有
控件
的可用性。