谁碰到过datagridview绑定数据里面的Checkbox显示不出来?

qt里面的事件与信号问题
自学几天,碰到个概念假如我重写一个myLabel类,继承QLabel,重写它的mousePressEvent(QMouseEvent&*)然后写一个继承QMainWindow的类,里面放一个myLabel,一个QPushButton运行后,我点击myLabel,生成的QMouseEvent是被QMainWindow::QObject::event()接收还是被myLabel对象里的那个函数给接收?
本文地址 :CodeGo.net/922334/
-------------------------------------------------------------------------------------------------------------------------
1.在被点击时,如果控件没有重载mousePressEvent的话,消息还是会被传给父对象,如果有的话就不传给父对象好像QWidget里面都有mousePressEvent&都传给自己1.&这不叫重载(overload),这叫覆盖(override)2.&这儿描述的现象属于Qt事件系统的“事件转发”&(event&propagation)可以参考&/cyclone/blog/item/fe6ab3de0e9f2155ccbf1aea.html事件转发的规则也很简单,取决于event是否被&filter&或&accept
在被点击时,如果控件没有重载mousePressEvent的话 CodeGo.net,消息还是会被传给父对象,如果有的话就不传给父对象
你可以尝试在myLabel中的mousePressEvent增加一些打印或者其他动作,有没有被执行
我感觉应该是QMainWindow::QObject::event()接受,不过不知道能不能设置一下,让myLabel中的mousePressEvent接受。
本文标题 :qt里面的事件与信号问题
本文地址 :CodeGo.net/922334/
Copyright (C) 2014 CodeGo.net 沪ICP备号 联&系& c&o&d&e&g&o &@&1&2&6&.&c&o&mdatagridview的checkboxcolumn的能显示文字吗?
[问题点数:58分,结帖人yuepanjuguainiao]
datagridview的checkboxcolumn的能显示文字吗?
[问题点数:58分,结帖人yuepanjuguainiao]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。共有458位成员   人气指数 -   最新排名 -
【话题】如何实现datagridview中的checkbox“全选”“全不选”?
13:14:13 来自:wangyn990428 浏览数:61次
datagridview1控件中添加了“Column1”,类型为“DataGridViewCheckBoxColumn”
请教各位如何实现datagridview中的checkbox“全选”“全不选”?
易不易回复于02日13点26分 
For i as integer=0 to GridView1.Rows.Count -1
CheckBox cbox =Ctype(GridView1.Rows(0).FindControl(&column1&),CheckBox)
If CheckBox2.Checked Then
& & & & & & & cbox.Checked = true
& & & & & & & cbox.Checked = false
俺顺手写的,不知道行不行。
sun100回复于02日13点37分 
For i as integer=0 to GridView1.Rows.Count -1
& & & Dim cbox As CheckBox=Ctype(GridView1.Rows(0).FindControl(&column1&),CheckBox)
& & & If CheckBox2.Checked Then
& & & & & & & cbox.Checked = true
& & & Else
& & & & & & & cbox.Checked = false
& & & End If
朴嘉明回复于02日13点49分 
&script type=&text/javascript& language=&JavaScript&&
& function selectAll(chkVal)&
& & for(i=0;i &rr.i++)&
// rr为form的ID检索form里的所有元素
document.rr.elements[i].checked=(chkVal== true)?&
true: //传值,在选择
JS放在 &HEAD&里
&asp:CheckBoxList ID=&CheckBoxList1& runat=&server& DataTextField=&u_name&
& & & & & & & & & & & & & & DataValueField=&u_name& RepeatColumns=&2& DataSourceID=&AccessDataSource1& BorderStyle=&None&&
& & & & & & & & & & & &
&/asp:CheckBoxList&
& & & & & & & & & & & & & &input id=&Checkbox1& type=&checkbox& onclick=&selectAll(this.checked)&/&
& & & & & & & & & & & & && &asp:Label ID=&Label3& runat=&server& Text=&全选 & Width=&42px& BorderStyle=&None&& &/asp:Label& &br /&
cloud1234回复于02日14点00分 
谢谢10楼,调试过可行
shixiyao回复于02日14点12分 
模板列,js赋值
mashuhua回复于02日14点23分 
For i as integer=0 to GridView1.Rows.Count -1
& & & Dim cbox As CheckBox=Ctype(GridView1.Rows(i).FindControl(&column1&),CheckBox)
& & & If CheckBox2.Checked Then
& & & & & & & cbox.Checked = true
& & & Else
& & & & & & & cbox.Checked = false
& & & End If
黄功琪回复于02日14点34分 
我能想到的是 遍历所有的DataGridViewCheckBoxColumn来赋值,期待完美解决方案
難得糊凃回复于02日14点45分 
好像只有遍历每一行吧
ccbzhuxiaojie回复于02日14点57分 
& & & & For Each r As DataGridViewRow In datagridview.Rows
& & & & & & r.Cells(0).Value = checkbox.Checked
& & & & Next
寒冷的心回复于02日15点08分 
ella_lin回复于02日15点20分 
普通列的赋值也是遍历,这个也一样吧……
Bluecheese回复于02日15点33分 
有C#的代码,各位帮忙转换成VB的
& & & & for (int i = 0; i
&= GridView1.Rows.Count - 1; i++)
& & & & & & CheckBox cbox = (CheckBox)(GridView1.Rows[i].FindControl(&column1&));
& & & & & & if (CheckBox2.Checked == true)
& & & & & & {
& & & & & & & & cbox.Checked =
& & & & & & }
& & & & & & else
& & & & & & {
& & & & & & & & cbox.Checked =
& & & & & & }
VB.NET的其他话题...
热门脚本语言:带CheckBox列头的DataGridView - Kevin Gao - 博客园
Powered by:
模板提供:
在项目的开发中,在DataGridView中将CheckBox作为第一列使用的很平常,使用微软自带DataGridView中的DataGridViewCheckBoxCell,但是微软自带的DataGridView中又没有能够将CheckBox作为列头来做全选和全取消选择的功能。所以如果想实现在列头上显示一个CheckBox并且点击CheckBox来实现全选和全取消,就没有现成的。但是办法是人想出来的,既然微软没有能够提供现成的实现方法,那我们就要自己动手,才能丰衣足食了。其实这个功能实现起来也不是很难,我们首先要定义一个DatagridViewCheckBoxHeaderCell类,它是继承自DataGridViewColumnHeaderCell,主要是要重写里面的OnPaint方法和OnMouseClick方法即可,代码如下:
&class DatagridViewCheckBoxHeaderCell : DataGridViewColumnHeaderCell
&&&&&&& Point checkBoxL
&&&&&&& Size checkBoxS
&&&&&&& bool _checked =
&&&&&&& Point _cellLocation = new Point();
&&&&&&& System.Windows.Forms.VisualStyles.CheckBoxState _cbState =
&&&&&&&&&&& System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedN
&&&&&&& public event CheckBoxClickedHandler OnCheckBoxC
&&&&&&& public DatagridViewCheckBoxHeaderCell()
&&&&&&& protected override void Paint(System.Drawing.Graphics graphics,
&&&&&&&&&&& System.Drawing.Rectangle clipBounds,
&&&&&&&&&&& System.Drawing.Rectangle cellBounds,
&&&&&&&&&&& int rowIndex,
&&&&&&&&&&& DataGridViewElementStates dataGridViewElementState,
&&&&&&&&&&& object value,
&&&&&&&&&&& object formattedValue,
&&&&&&&&&&& string errorText,
&&&&&&&&&&& DataGridViewCellStyle cellStyle,
&&&&&&&&&&& DataGridViewAdvancedBorderStyle advancedBorderStyle,
&&&&&&&&&&& DataGridViewPaintParts paintParts)
&&&&&&&&&&& base.Paint(graphics, clipBounds, cellBounds, rowIndex,
&&&&&&&&&&&&&&& dataGridViewElementState, value,
&&&&&&&&&&&&&&& formattedValue, errorText, cellStyle,
&&&&&&&&&&&&&&& advancedBorderStyle, paintParts);
&&&&&&&&&&& Point p = new Point();
&&&&&&&&&&& Size s = CheckBoxRenderer.GetGlyphSize(graphics,
&&&&&&&&&&& System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedNormal);
&&&&&&&&&&& p.X = cellBounds.Location.X +
&&&&&&&&&&&&&&& (cellBounds.Width / 2) - (s.Width / 2);
&&&&&&&&&&& p.Y = cellBounds.Location.Y +
&&&&&&&&&&&&&&& (cellBounds.Height / 2) - (s.Height / 2);
&&&&&&&&&&& _cellLocation = cellBounds.L
&&&&&&&&&&& checkBoxLocation =
&&&&&&&&&&& checkBoxSize =
&&&&&&&&&&& if (_checked)
&&&&&&&&&&&&&&& _cbState = System.Windows.Forms.VisualStyles.
&&&&&&&&&&&&&&&&&&& CheckBoxState.CheckedN
&&&&&&&&&&& else
&&&&&&&&&&&&&&& _cbState = System.Windows.Forms.VisualStyles.
&&&&&&&&&&&&&&&&&&& CheckBoxState.UncheckedN
&&&&&&&&&&& CheckBoxRenderer.DrawCheckBox
&&&&&&&&&&& (graphics, checkBoxLocation, _cbState);
&&&&&&& protected override void OnMouseClick(DataGridViewCellMouseEventArgs e)
&&&&&&&&&&& Point p = new Point(e.X + _cellLocation.X, e.Y + _cellLocation.Y);
&&&&&&&&&&& if (p.X &= checkBoxLocation.X && p.X &=
&&&&&&&&&&&&&&& checkBoxLocation.X + checkBoxSize.Width
&&&&&&&&&&& && p.Y &= checkBoxLocation.Y && p.Y &=
&&&&&&&&&&&&&&& checkBoxLocation.Y + checkBoxSize.Height)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& _checked = !_
&&&&&&&&&&&&&&& if (OnCheckBoxClicked != null)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& OnCheckBoxClicked(_checked);
&&&&&&&&&&&&&&&&&&& this.DataGridView.InvalidateCell(this);
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&&&&&& base.OnMouseClick(e);
&&&&&&& }&&&&
除此之外,还需要加上事件处理的委托,代码如下:
&public delegate void CheckBoxClickedHandler(bool state);
&&& public class DataGridViewCheckBoxHeaderCellEventArgs : EventArgs
&&&&&&& bool _bC
&&&&&&& public DataGridViewCheckBoxHeaderCellEventArgs(bool bChecked)
&&&&&&&&&&& _bChecked = bC
&&&&&&& public bool Checked
&&&&&&&&&&& get { return _bC }
然后在客户端加上如下代码:
DataGridViewCheckBoxColumn colCB = new DataGridViewCheckBoxColumn();DatagridViewCheckBoxHeaderCell cbHeader =
new DatagridViewCheckBoxHeaderCell();colCB.HeaderCell = cbHdatagridview1.Columns.Add(colCB);
再在客户端完成事件处理:
cbHeader.OnCheckBoxClicked +=&&&& new CheckBoxClickedHandler(cbHeader_OnCheckBoxClicked);
主要的代码实现就这么多呢。
为了方便大家的使用,我做了一个Demo来演示具体怎么使用,可以到我的资源中去下载:。
原文的作者没有提供例子。
想查看原文的可以点击如下地址查看:
阅读(...) 评论()DataGridView控件中CheckBox列的使用
23:01:25 阅读11 评论0 &&字号:大中小&订阅
Form程序开发的人对.NET中的DataGridView控件一定都不陌生,平时用的最多的就是数据表格的显示,一般ColumnType都是
DataGridViewTextBoxColumn类型的,在此根据一个实例交流一下DataGridView中
DataGridViewCheckBoxColumn类型的列的基本使用。
前段时间编写一个基于WebService的短信收发程序,其中有一个短信群发功能,如图1所示,既可以手工键入数字添加电话号码,也可以从数据库的联系人记录中选取收件人电话号码。
图1: 短信发送界面
手动键入数字添加号码的方式在此不作讨论,单击“电话薄”按钮,弹出图2所示界面。
图2:从数据库联系人记录中选择短信接收人界面
对于.NET中寻常的CheckBox控件来说,无需任何代码,在程序运行时点击CheckBox控件即可切换其选中状态。但是在
DataGridView控件中的DataGridViewTextBoxColumn类型的列,要实现如此功能,却要借助一定的代码来实现。在程序中,添加DataGridView控件的CellContentClick事件,代码如下:
DataGridView控件的CellContentClick事件
private void dgvAllUser_CellContentClick(object sender, DataGridViewCellEventArgs e)
(e.ColumnIndex == 0 &&
e.RowIndex != -1)
((bool)dgvAllUser.Rows[e.RowIndex].Cells[0].EditedFormattedValue
dgvAllUser.Rows[e.RowIndex].Cells[0].Value = false;
dgvAllUser.Rows[e.RowIndex].Cells[0].Value = true;
注意判断条件if ((bool)dgvAllUser.Rows[e.RowIndex].Cells[0].EditFormattedValue
== true),获取CheckBox的值需用EditFormattedValue或者FormattedValue,而不能使用Value。然后再“添加”按钮的
Click事件中用一个循环将处于选中状态的CheckBox所对应的列的联系人的电话号码
(dgvAllUser.Rows[i].Cells[4].Value.ToString())添加到短信发送界面的收件人号码列表中。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 datagridview绑定数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信