单选多选按钮

合集下载

常见多选的实现形式

常见多选的实现形式

常见多选的实现形式多选题是一种常见的考察学生知识掌握程度和思维能力的题型。

在教育领域和各种考试中都广泛应用。

多选题的实现形式有多种,下面将介绍几种常见的实现形式。

一、单选按钮形式单选按钮形式是最常见的多选题实现形式之一。

在这种形式中,每个选项都有一个单选按钮,学生可以选择其中的一个或多个选项。

这种形式简单直观,易于理解和操作。

在电子化考试系统中,可以通过点击按钮来选择答案。

二、复选框形式复选框形式是另一种常见的多选题实现形式。

在这种形式中,每个选项都有一个复选框,学生可以选择其中的一个或多个选项。

与单选按钮形式相比,复选框形式更加灵活,可以选择多个答案。

这种形式常用于在线调查和问卷调查中。

三、下拉菜单形式下拉菜单形式是一种简洁的多选题实现形式。

在这种形式中,每个选项都以下拉菜单的形式呈现,学生可以从菜单中选择一个或多个选项。

这种形式适用于空间有限的情况,可以有效地节省页面空间。

四、拖拽排序形式拖拽排序形式是一种创新的多选题实现形式。

在这种形式中,学生需要将选项拖拽到正确的位置上,完成排序。

这种形式可以考察学生对知识的整体把握和逻辑思维能力。

五、填空选择形式填空选择形式是一种结合了填空题和选择题的多选题实现形式。

在这种形式中,每个选项都是一个填空,学生需要从给定的选项中选择一个或多个填空来完成题目。

这种形式可以考察学生对知识的理解和应用能力。

六、图片选择形式图片选择形式是一种以图片为选项的多选题实现形式。

在这种形式中,每个选项都是一个图片,学生需要选择其中的一个或多个选项。

这种形式常用于艺术类、地理类等需要通过图片来辅助理解的题目。

以上是几种常见的多选题实现形式。

每种形式都有其特点和适用场景,根据具体的需求和目的选择合适的形式可以提高学生的参与度和答题效果。

在设计多选题时,还应注意题目的准确性和选项的清晰性,避免歧义和错误信息的出现。

希望以上内容对您有所帮助。

Event ID 含义 内容浅析

Event ID 含义 内容浅析

Event ID 含义内容浅析单选或多选按钮消息(前缀:pbm_bm)pbm_bmgetcheck 单选按钮或多选按钮是否被选。

pbm_bmgetstate 按钮是否加亮。

pbm_bmsetcheck 将无线按钮或确认框的选中状态改为未选中状态,反之亦然。

pbm_bmsetstate 加亮或不加亮按钮。

pbm_bmchange 改变按钮的风格,例如,改为单选按钮或组合框。

单选或多选按钮通知消息(前缀:pbm_bn)pbm_bnclicked 按钮控件被点中。

pbm_bndisable 使按钮控件无效。

pbm_bndoubleclicked 按钮控件被双点。

pbm_bndragdrop 一个对象被放到按钮控件。

pbm_bndragenter 一个对象被拖到按钮控件。

pbm_bndragleave 一个对象被拖离按钮控件。

pbm_bndragover 一个对象被拖经按钮控件。

pbm_bnhilite 按钮控件被加亮。

pbm_bnpaint 按钮控件被绘制。

pbm_bnsetfocus 按钮控件获得聚焦。

pbm_bnunhilite 按钮控件不被加亮。

通用对话框消息(前缀:pbm_cb)pbm_cbaddstring 将字符串加到通用对话框。

pbm_cbdeletestring 从通用对话框删除一个字符串。

pbm_cbdir 加一个目录列表到通用对话框。

pbm_cbfindstring 搜索以一组字符开头的字符串。

pbm_cbfindstringexact 搜索与所提供的字符完全匹配的字符串。

pbm_cbgetcount 列表框中的项数。

pbm_cbgetcursel 当前被选项的数目。

pbm_cbgetdroppedcontrolset 列表框在屏幕上的坐标位置。

pbm_cbgeteditsel 编辑器控件中被选字符的范围。

pbm_cbgetextendedui 缺省或扩展的用户界面。

pbm_cbgetitemdata 重画的列表框中的4字节(32位)项。

easypoi模板 指令介绍

easypoi模板 指令介绍

easypoi模板指令介绍EasyPoi是一款广泛应用于企业级移动应用开发的工具,它提供了一套简单易用的模板系统,方便开发者快速构建各种表单和数据采集应用。

本文将详细介绍EasyPoi模板指令的使用方法和技巧,帮助开发者更好地理解和运用EasyPoi模板。

一、模板指令概述EasyPoi模板指令是一组特殊的标记语言,用于在模板中定义各种数据字段、验证规则和操作逻辑。

通过使用这些指令,开发者可以轻松地创建自定义的表单和数据采集应用,满足不同业务场景的需求。

二、常见模板指令1.文本输入框:用于输入文本的指令,通过“<inputtype="text">”表示。

2.数字输入框:用于输入数字的指令,通过“<inputtype="number">”表示。

3.单选按钮:用于选择单个选项的指令,通过“<radioname="option">”表示。

4.多选按钮:用于选择多个选项的指令,通过“<checkboxname="option">”表示。

5.跳转链接:用于跳转到其他页面的指令,通过“<ahref="page">”表示。

6.验证规则:用于定义输入数据必须满足的条件,通过“<validationtype="rule">”表示。

7.操作按钮:用于执行特定操作的指令,通过“<button>”表示。

三、指令使用方法在EasyPoi模板中,可以通过在合适的位置插入指令来定义数据字段、验证规则和操作按钮等。

具体使用方法如下:1.在模板中插入指令的位置:通常在需要输入数据的表单字段或按钮旁边插入指令。

2.指令的格式:每个指令都需要以特定的标记开头,例如“<inputtype="text">”表示一个文本输入框。

青书学堂考试答案计算机科学与技术(高起本)课程:VB程序设计(高起本)

青书学堂考试答案计算机科学与技术(高起本)课程:VB程序设计(高起本)

佳木斯大学期末考试批次专业:201801-计算机科学与技术(高起本)课程:VB程序设计(高起本)总时长:120分钟1. (单选题) Visual Basic 6.0集成开发环境有三种工作状态,不属于三种工作状态之一的是( )。

(本题2.0分)A、设计状态B、编写代码状态C、运行状态D、运行状态学生答案: B标准答案:B解析:得分: 22. (单选题) 在Visual Basic中,所有的窗体和控件都必定具有的一个属性是( )。

(本题2.0分)A、NameB、FontC、CaptionD、FillColor学生答案: A标准答案:A解析:得分: 23. (单选题) Visual Basic集成开发环境中不包括下列哪些窗口( )。

(本题2.0分)A、工具箱窗口B、工程资源管理器窗口C、命令窗口D、属性窗口学生答案: C标准答案:C解析:得分: 24. (单选题) 后缀为.bas的文件表示VB的(本题2.0分)A、类模块文件B、窗体文件C、工程文件D、标准类模块文件学生答案: D标准答案:D解析:得分: 25. (单选题) 下列自定义标识符中合法的是:(本题2.0分)A、1MyB、forthC、@homeD、class学生答案: B标准答案:B解析:得分: 26. (单选题) 表达式100 mod 12 的结果为:(本题2.0分)A、 4B、 6C、8D、10学生答案: A标准答案:A解析:得分: 27. (单选题) 下列可以作为VB变量的是:(本题2.0分)A、a(x*y)B、secondC、1xyzD、学生信息学生答案: B标准答案:B解析:得分: 28. (单选题) VB提供控件的窗口是(本题2.0分)A、工具栏B、工具箱C、文本框D、属性窗口学生答案: A标准答案:A解析:得分: 29. (单选题) 设置窗体有可见边框及标题栏,无最小化和最大化按钮,不能调整大小,BorderStyle属性应该设置为(本题2.0分)A、0-NoneB、1-Fixed SingleC、2-SizableD、3-Fixed Dialog学生答案: B标准答案:B解析:得分: 210. (单选题) 语句format(1234.5678 , ”####.00” )的结果为:(本题2.0分)A、1234.56”B、1234.57C、1234.56D、1234.55学生答案: B标准答案:B解析:得分: 211. (单选题) 下列语句哪个为二维数组的定义语句:(本题2.0分)A、dim g [2,3]B、dim g[2][3]C、dim g(2 ,3)D、dim g(2)(3)学生答案: C标准答案:C解析:得分: 212. (单选题) 隐藏窗体所需要设置的属性是(本题2.0分)A、ShowInTaskbarB、MovableC、VisibleD、Enable学生答案: C标准答案:C解析:得分: 213. (单选题) 获取当前系统日期的函数名为:(本题2.0分)A、NowB、DateC、IsDateD、TimeOfDate学生答案: B标准答案:B解析:得分: 214. (单选题) 下列说法正确的是(本题2.0分)A、局部变量是指那些在过程中用Dim语句或Static语句声明的变量B、局部变量的作用域仅限于声明它的过程C、静态局部变量是在过程中用static语句声明的D、局部变量在声明它的过程执行完毕后就被释放了学生答案: B标准答案:B解析:得分: 215. (单选题) 能够改变标签显示标题的属性是(本题2.0分)A、CaptionB、NameC、TextD、Border学生答案: A标准答案:A解析:得分: 216. (单选题) 程序代码:text1.text = “UESTC”中,Text1,Text,“UESTC”分别代表( )(本题2.0分)A、对象,值,属性B、对象,方法,属性C、对象,属性,值D、属性,对象,值学生答案: C标准答案:C解析:得分: 217. (单选题) 按照变量的作用域可将变量划分为(本题2.0分)A、公有、私有、系统B、全局变量、模块级变量、过程级变量C、动态、常熟、静态D、Public、Private、Protected学生答案: B标准答案:B解析:得分: 218. (单选题) UBOUND函数的作用是(本题2.0分)A、获取数组的下界B、获取数组的上界C、获取数组的长度D、获取数组的维度学生答案: B标准答案:B解析:得分: 219. (单选题) 如下数组声明语句,正确的是(本题2.0分)A、Dim a[1,1] as intergerB、Dim a(2,2) as integerC、Dim a(n,n) as integerD、Dim a(4 4) as integer学生答案: B标准答案:B解析:得分: 220. (单选题) 在设计应用程序时,可以查看到应用程序工程中所有组成部分的窗口是(本题2.0分)A、窗体设计B、属性窗口C、代码窗口D、工程资源管理器窗口学生答案: D标准答案:D解析:得分: 221. (多选题) 下列叙述中正确的是( )。

C#WinForm下DataGridView单选按钮列和支持三种选择状态的复选框列的实现

C#WinForm下DataGridView单选按钮列和支持三种选择状态的复选框列的实现

C#WinForm下DataGridView单选按钮列和⽀持三种选择状态的复选框列的实现在C# WinForm下做过项⽬的朋友都知道,其中的DataGridView控件默认只⽀持DataGridViewButtonColumn、DataGridViewCheckBoxColumn、DataGridViewComboBoxColumn、DataGridViewImageColumn、DataGridViewLinkColumn和DataGridViewTextBoxColumn六种列类型,如果你想要在DataGridView的列中添加其它的⼦控件,则需要⾃⼰实现DataGridViewColumn和DataGridViewCell,这就意味着你需要从现有的列中继承并改写⼀些⽅法,如实现⼀个⽀持单选按钮的列,或⽀持三种选择状态的多选按钮的列。

上⾯两个截图分别为RadioButton列和⽀持三种状态的CheckBox列在DataGridView中的实现效果,我是在Windows 2003中实现的,因此显⽰的效果跟在XP和Vista下有些区别,Vista下CheckBox的第三种状态(不确定状态)显⽰出来的效果是⼀个实⼼的蓝⾊⽅块。

下⾯我看具体来看看如何实现这两种效果。

要实现⾃定义的DataGridView列,你需要继承并改写两个类,⼀个是基于DataGridViewColumn的,⼀个是基于DataGridViewCell的,因为RadionButton和CheckBox的实现原理类似,因此我们可以将这两种列采⽤同⼀种⽅法实现。

创建DataGridViewDisableCheckBoxCell和DataGridViewDisableCheckBoxColumn两个类,分别继承⾃DataGridViewCheckBoxCell和DataGridViewCheckBoxColumn。

代码如下:public class DataGridViewDisableCheckBoxCell: DataGridViewCheckBoxCell{public bool Enabled { get; set; }// Override the Clone method so that the Enabled property is copied.public override object Clone(){DataGridViewDisableCheckBoxCell cell = (DataGridViewDisableCheckBoxCell)base.Clone();cell.Enabled = this.Enabled;return cell;}// By default, enable the CheckBox cell.public DataGridViewDisableCheckBoxCell(){this.Enabled = true;}// Three state checkbox column cellprotected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex,DataGridViewElementStates elementState, object value, object formattedValue, string errorText,DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts){// The checkBox cell is disabled, so paint the border, background, and disabled checkBox for the cell.if (!this.Enabled){// Draw the cell background, if specified.if ((paintParts & DataGridViewPaintParts.Background) == DataGridViewPaintParts.Background){SolidBrush cellBackground = new SolidBrush(cellStyle.BackColor);graphics.FillRectangle(cellBackground, cellBounds);cellBackground.Dispose();}// Draw the cell borders, if specified.if ((paintParts & DataGridViewPaintParts.Border) == DataGridViewPaintParts.Border){PaintBorder(graphics, clipBounds, cellBounds, cellStyle, advancedBorderStyle);}// Calculate the area in which to draw the checkBox.CheckBoxState state = CheckBoxState.MixedDisabled;Size size = CheckBoxRenderer.GetGlyphSize(graphics, state);Point center = new Point(cellBounds.X, cellBounds.Y);center.X += (cellBounds.Width - size.Width) / 2;center.Y += (cellBounds.Height - size.Height) / 2;// Draw the disabled checkBox.CheckBoxRenderer.DrawCheckBox(graphics, center, state);}else{// The checkBox cell is enabled, so let the base class, handle the painting.base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);}}}public class DataGridViewDisableCheckBoxColumn : DataGridViewCheckBoxColumn{public DataGridViewDisableCheckBoxColumn(){this.CellTemplate = new DataGridViewDisableCheckBoxCell();}}主要是要实现DataGridViewDisableCheckBoxCell的呈现⽅式,其中设置了CheckBoxState的状态为MixedDisabled,表⽰⽀持三种状态,这个是实现效果的核⼼,如果要实现RadioButton列的效果,只需要将Paint⽅法改成下⾯这样即可:protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex,DataGridViewElementStates elementState, object value, object formattedValue, string errorText,DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts){// Draw the cell background, if specified.if ((paintParts & DataGridViewPaintParts.Background) == DataGridViewPaintParts.Background){SolidBrush cellBackground = new SolidBrush(cellStyle.BackColor);graphics.FillRectangle(cellBackground, cellBounds);cellBackground.Dispose();}// Draw the cell borders, if specified.if ((paintParts & DataGridViewPaintParts.Border) == DataGridViewPaintParts.Border){PaintBorder(graphics, clipBounds, cellBounds, cellStyle, advancedBorderStyle);}// Calculate the area in which to draw the checkBox.RadioButtonState state = value != null && (SelectedStatus)value == SelectedStatus.Selected ? RadioButtonState.CheckedNormal : RadioButtonState.UncheckedNormal; Size size = RadioButtonRenderer.GetGlyphSize(graphics, state);Point center = new Point(cellBounds.X, cellBounds.Y);center.X += (cellBounds.Width - size.Width) / 2;center.Y += (cellBounds.Height - size.Height) / 2;// Draw the disabled checkBox.RadioButtonRenderer.DrawRadioButton(graphics, center, state);}使⽤RadioButtonState代替CheckBoxState。

QButtonGroup

QButtonGroup

QButtonGroup单选按钮和多选按钮,存放进QButtonGroup中QButtonGroup⽅法来实现分组:将相同功能的按键,设为⼀个分组,然后可以进⾏单选或多选或互斥单选QAbstractButton类是按钮部件的抽象基类,提供了按钮所共有的功能。

1//单选按钮放进组,多选按钮放进组2 sexGroup = new QButtonGroup(this);3 sexGroup->addButton(this->ui->rb_male,0);4 sexGroup->addButton(this->ui->rb_female,1);5this->ui->rb_male->setChecked(true); //default67 habbitGroup = new QButtonGroup(this);8 habbitGroup->addButton(this->ui->cb_1,0);9 habbitGroup->addButton(this->ui->cb_2,1);10 habbitGroup->addButton(this->ui->cb_3,2);11 habbitGroup->addButton(this->ui->cb_4,3);12// 设置不互斥13 habbitGroup->setExclusive(false);//这样的话就⽀持多选了。

1//获取性别2 QString sex = this->sexGroup->checkedButton()->text();1//获取兴趣,遍历2 QList<QAbstractButton*> ins_list = habbitGroup->buttons();3 QString ins="";4for(int i =0 ;i<ins_list.length();i++)5 {6 QAbstractButton *che = ins_list.at(i);7if(che->isChecked())8 ins += che->text() + ",";9 }。

使用JAVASCRIPT实现单选及多选的向右和向左移动

使用JAVASCRIPT实现单选及多选的向右和向左移动

使用JAVASCRIPT实现单选及多选的向右和向左移动在JavaScript中,我们可以使用事件监听器和DOM操作来实现单选和多选的向右和向左移动。

以下是一个示例代码,其中包含注释以解释每个部分的功能:```javascript//获取所有选项的父元素var optionsWrapper = document.getElementById("options-wrapper");//获取所有选项var options =optionsWrapper.getElementsByClassName("option");//获取向右和向左的按钮var moveRightButton = document.getElementById("move-right-button");var moveLeftButton = document.getElementById("move-left-button");//定义选中的选项var selectedOptions = [];//遍历所有选项,给它们添加点击事件监听器for (var i = 0; i < options.length; i++)options[i].addEventListener("click", functio//判断当前选项是否已经被选中if (selectedOptions.includes(this))//如果已经被选中,则从选中的选项中移除var index = selectedOptions.indexOf(this); selectedOptions.splice(index, 1);this.classList.remove("selected");} else//如果还未被选中,则添加到选中的选项中selectedOptions.push(this);this.classList.add("selected");}});//向右移动选项的函数function moveRigh//遍历选中的选项并将它们移动到右边的容器中for (var i = 0; i < selectedOptions.length; i++) optionsWrapper.removeChild(selectedOptions[i]);document.getElementById("right-options-wrapper").appendChild(selectedOptions[i]);selectedOptions[i].classList.remove("selected");}//清空选中的选项selectedOptions = [];//向左移动选项的函数function moveLef//遍历选中的选项并将它们移动到左边的容器中for (var i = 0; i < selectedOptions.length; i++)document.getElementById("left-options-wrapper").appendChild(selectedOptions[i]);selectedOptions[i].classList.remove("selected");}//清空选中的选项selectedOptions = [];//给向右和向左的按钮添加点击事件监听器moveRightButton.addEventListener("click", moveRight);moveLeftButton.addEventListener("click", moveLeft);```上述代码假设有如下的HTML结构:```html<div id="options-wrapper"><div id="left-options-wrapper"><div class="option">Option 1</div><div class="option">Option 2</div><div class="option">Option 3</div></div><div id="right-options-wrapper"></div></div><button id="move-right-button">Move Right</button><button id="move-left-button">Move Left</button>```在上述代码中,我们首先获取了所有选项的父元素`optionsWrapper`,然后通过`getElementsByClassName`获取了所有的选项元素`options`。

PyQt5单选按钮(QRadioButton)、多选按钮(QCheckBox)、普通按钮(。。。

PyQt5单选按钮(QRadioButton)、多选按钮(QCheckBox)、普通按钮(。。。

PyQt5单选按钮(QRadioButton)、多选按钮(QCheckBox)、普通按钮(。

⼀、单选按钮和按钮组(QRadioButton)QRadioButton 是单选按钮,该⼩部件提供了⼀个带有⽂本标签的单选按钮(没错,本质上它还是⼀个按钮)QRadioButton 是⼀个选项按钮,可以打开(选中)或关闭(取消选中);单选按钮通常为⽤户提供“多选⼀”操作在⼀组单选按钮中,⼀次只能检查⼀个单选按钮;如果⽤户选择另⼀个按钮,则先前选择的按钮被关闭单选按钮默认为autoExclusive(⾃动互斥)。

如果启⽤了⾃动互斥功能,则属于同⼀个⽗窗⼝⼩部件的单选按钮的⾏为就属于同⼀个互斥按钮组的⼀部分当然加⼊ QButtonGroup 中能够实现多组单选按钮互斥此外如果你有多组单选按钮,每组都应该有不同的⽗控件,或者不同的Layout(通常建议:多组单选按钮,放到不同的按钮组QButtonGroup 中)1. 信号:选中状态改变如果⽤户操作点击了按钮组 QButtonGroup 中的⼀个按钮, QButtonGroup 就会发出 buttonClicked 信号,可以这样指定处理该信号的函数buttongroup.buttonClicked.connect(function)然后,在处理函数中调⽤ QButtonGroup 对象的 checkedButton() 函数,返回值就是被选中的按钮对象,再调⽤这个返回的按钮对象的text() ⽅法得到选中⽂本,就可以知道是哪个选项被选中了2. 向按钮组添加按钮控件当创建⼀个 QButtonGroup 时,我们可以使⽤ addButton() ⽅法添加按钮到该按钮组中rbtn = QRadioButton(window)btngroup = QButtonGroup(window)btngroup.addButton(rbtn)3. ⽰例:from PyQt5.Qt import *app = QApplication([])window = QWidget()window.resize(300, 100)window.move(300, 300)rbtn1 = QRadioButton(window)rbtn2 = QRadioButton(window)rbtn3 = QRadioButton(window)rbtnA = QRadioButton(window)rbtnB = QRadioButton(window)rbtnC = QRadioButton(window)btngroup1 = QButtonGroup(window)btngroup1.addButton(rbtn1)btngroup1.addButton(rbtn2)btngroup1.addButton(rbtn3)btngroup2 = QButtonGroup(window)btngroup2.addButton(rbtnA)btngroup2.addButton(rbtnB)btngroup2.addButton(rbtnC)rbtn1.setText("1")rbtn1.move(50, 30)rbtn2.setText("2")rbtn2.move(90, 30)rbtn3.move(130, 30)rbtnA.setText("A")rbtnA.move(50, 60)rbtnB.setText("B")rbtnB.move(90, 60)rbtnC.setText("C")rbtnC.move(130, 60)window.show()app.exec_()⼆、多选按钮和按钮组(QCheckBox)QCheckBox 是多选按钮,也叫复选框复选框(QCheckBox),⼀般来说复选框通常⽤于表⽰可以启⽤或禁⽤的应⽤程序中的功能,QCheckBox继承⾃QAbstractButton,它提供了⼀个带⽂本标签的复选框QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮,这是因为它们都可以在开(选中)或者关(未选中)之间切换区别是对⽤户选择的限制:单选框定义了“多选⼀”的选择,⽽复选框提供的是“多选多”的选择只要复选框被选中或者清除,都会发出⼀个 stateChanged() 信号;如果想在复选框状态改变的时候触发⼀个⾏为,请连接这个信号,可以使⽤ isChecked()⽅法来判断复选框是否被选中,返回True,是选中,False是未被选也可以⽤ setChecked(bool) ⽅法设置复选按钮的状态。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5

单选按钮的“分组”概念的设置方法
◦ 综上,对多组单选按钮的分组,步骤如下:
◦ 1. 布局所有的单选按钮 ◦ 2. 用Ctrl+d对所有单选按钮设置tab顺序。期望放在一起的 按钮具有相邻的顺序。 ◦ 3. 在期望分为一组的单选按钮中,选择tab顺序最小的,在 其属性中选择group选项。该按钮将作为本组的head。 ◦ 4. 一个组的单选按钮中,只有具有group属性的按钮能够使 用int类型的类成员变量。它将“代表”同组的其余的按钮。

依次类推编写4个按钮的判断代码,updatedata(false); 一种简写的代码,可以是

12



单选按钮(Radio Button) 多选按钮(Check Box) 静态控件(Static )
13

多选按钮的“分组”属性用处不大。
◦ 不论如何,都要逐一判断选中情况。 ◦ 因此,每个多选按钮都能够添加一个成员变量,默认是 bool型。
7

单选按钮选中状态的设置。

Method 1:为一组单选按钮添加一个 int 型变量,通过检查该 变量值,确定哪个按钮被选中。需要更新数据。
◦ Method 2:利用GetDlgItem方法获取按钮指针,利用 GetCheck方法查询是否选中。可以直接使用。 ◦ Method 3:利用IsDlgButtonChecked(IDD)== BST_CHECKED方法 判断IDD对应的控件是否被选中。可以直接使用。
◦ 响应单击事件——与普通按钮类似,只是多了一个选中 标记,同时会有互斥的效果。

响应单击事件
◦ 与普通按钮相同,直接添加响应函数进行处理,多个单选 控件之间的互斥由控件自动实现。 ◦ 缺点,如果一个页面上有很多个单选框,将产生很多个消 息响应函数——比如,选择星座,选择家乡所在的省份。
4

单选按钮的“分组”概念的设置方法


16






多选按钮,其实就是Cbutton类的对象。因此,是否 有方法直接对该对象进行编程? 看如下代码: CButton* pButton = NULL; pButton = (CButton*)GetDlgItem(IDC_CHECK1); if (pButton->GetCheck() == BST_CHECKED) { m_strStaticResult += "听音乐,"; }
18


6

单选按钮选中状态的获取。一共有三种方法。

Method 1:为一组单选按钮添加一个 int 型变量,通过检查该 变量值,确定哪个按钮被选中。需要更新数据。
◦ Method 2:利用GetDlgItem方法获取按钮指针,利用 GetCheck方法查询是否选中。可以直接使用。 ◦ Method 3:利用IsDlgButtonChecked(IDD)== BST_CHECKED方法 判断IDD对应的控件是否被选中。可以直接使用。
◦ Method1: 为每一个复选按钮建立一个 bool型的变量, true表示选中,false表示未选中。
◦ Method2:利用GetDlgItem方法获取按钮指针,利用 GetCheck方法查询是否选中。(与单选按钮相同)
14

在刚才的程序中添加一栏
15

上面的按钮使用方法中,有一个很大的问题:多选 按钮与一个bool类型变量绑定。 如果界面中有很多个多选按钮,那么需要绑定的变 量数量很多,给dlg类带来很大负担。 ——对于类来说,一般希望其中的成员变量尽可能 少,用函数中的局部变量来解决问题。
DEMO
17

可以看出,在代码中直接声明一个Cbutton对象,然 后调用GetDlgItem,获取界面中对应的对象指针, 就能够直接对其编程。其中, GetDlgItem是CWnd类 的一个方法。 如,判断按钮是否被选中,就使用了Cbutton类的 getcheck函数。 实际上,所有MFC控件都能够通过类似的方式直接 编程。——也是MFC控件的通用编程方法。
10

Step8: 直接为男生/女生两个按钮添加消息响应函 数,与添加Button的消息响应函数相同。 Step9: 添加代码: Step10:设置默认的生日选择。在OnInitDialog函数 中return语句前添加:


注:这也是设置某个RadioButton为选中状态的方法。
11

Step11:编写“获取生日”按钮响应函数
Windows 程序设计
于东 2015,第三周


单选按钮(Radio Button) 多选按钮(Check Box)
2



Button Radio Button Check Box
普通按钮 文艺按钮 多选按钮
只能选 一个 能选 多个
3

单选按钮一般有两种用途

记录用户的选择——在程序中通过编程对单选按钮进行 查询,判断哪个选项处于选中状态,并进行相应的动作。8Βιβλιοθήκη 9


Step1:建立对话框程序 Step2:放置两个单选按钮,修改ID和标题 Step3:放置一个“组框(Group Box)”,把单选按钮 放在其中 Step4:重复step3,放置4个单选按钮和一个组框 Step5:选择每个组框内的第一个按钮,添加其 Group属性 Step6:添加静态文本控件,并为其添加Cstirng变量 Step7:添加按钮控件,添加一个响应函数
◦ 同属于一个组的若干单选按钮,最多只有一个能够处于选 中状态。默认情况下,整个屏幕上所有单选按钮都被划分 为一个组。因此,使用多个单选项,就要重新设置单选按 钮的分组。
◦ 如何分组?假设所有单选按钮是可以排序的,比如8个按 钮分别是1, 3, 5, 6, 8, 9, 12, 20,那么可以指定按钮1和按钮8 是分组的“开头”。两个“开头”之间的所有单选按钮同 属于一个组。——这就是分组设置方法。 ◦ 默认情况下,每个控件都有一个tab顺序。MFC按照这个顺 序对所有单选按钮能进行排序。Tab顺序可以通过Ctrl+D 来修改。
相关文档
最新文档