DataGrid中Checkbox列的奇怪问题

firstrose 2008-05-07 04:31:01
通常情况下,只要选中行,再点checkbox,勾选状态马上就有变化。

但是我程序里的一个datagrid莫名其妙地出现了这样的事情:必须双击checkbox,然后鼠标再点别的cell,才能看到勾选状态变了

请问有人碰到这样的情况么,知道怎么解决么?

谢谢了!
...全文
78 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
firstrose 2008-05-08
  • 打赏
  • 举报
回复
问题解决了,换了个思路

private void dg_MouseDown(object sender, MouseEventArgs e)
{
DataGrid.HitTestInfo hti = dg.HitTest(e.X, e.Y);

if (hti.Type==DataGrid.HitTestType.Cell)
{
dg.CurrentCell = new DataGridCell(hti.Row, hti.Column);

dg.Select(hti.Row);

DataRowView drv =
(DataRowView)
BindingContext[dg.DataSource, ((DataSet) dg.DataSource).Tables[0].TableName].
Current;
}
}


这样就可以了
eagle_2008 2008-05-07
  • 打赏
  • 举报
回复
up````
xlfancy 2008-05-07
  • 打赏
  • 举报
回复
checkbox是三态值,而非二态值

下面代码是我实际使用,其中col为checkbox列索引

private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
int row=dataGrid1.CurrentCell.RowNumber;
int col=dataGrid1.CurrentCell.ColumnNumber;
int maxRow=((DataTable)dataGrid1.DataSource).Rows.Count;

//if (col>1)
if (row<maxRow && col>1)
{
bool b;
b=Convert.IsDBNull(dt.Rows[row][col]);
if (b==true)
{
dt.Rows[row][col]=1;
}
else
{
b=Convert.ToBoolean(dt.Rows[row][col]);
dt.Rows[row][col]=b==true?0:1;
}
}
}
firstrose 2008-05-07
  • 打赏
  • 举报
回复
datagrid根本没有事件

多谢楼上各位

继续问

我已经接近抓狂了
zf19811031 2008-05-07
  • 打赏
  • 举报
回复
可能触发了其他的东西,你把代码仔细看看。
tiancs 2008-05-07
  • 打赏
  • 举报
回复
你从新编译一下看,万一不行 ,把那个datagrid 删掉重做各,再不行把那个页面删掉重做
LGame 2008-05-07
  • 打赏
  • 举报
回复
你用的事件太多了吧,

Kevin_LiuFeng 2008-05-07
  • 打赏
  • 举报
回复
你先看看你的代码,还有没有其他事件会执行导致这个问题..

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧