在winform下的datagridview有什么办法能隐藏特定的单元格或者控件?求牛人回答

gxtmm52300 2011-10-24 02:46:42
我的datagridview中有一行为datagridviewcheckboxcolumn列 想根据判断语句隐藏列中某些单元格中的checkbox 请问有什么方法?
...全文
524 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdl2005lyx 2011-10-25
  • 打赏
  • 举报
回复
“以后遇到这样的问题 不会再去钻牛角尖了 分就给你吧!”
说的好,有时候我们过于在于界面的显示了,其实对用户来说,简单、实用、明了!
gxtmm52300 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sdl2005lyx 的回复:]

楼主,有一个概念你可以没有弄清楚:

所有DataGridViewColumn派生的列如DataGridViewTextBoxColumn,DataGridViewCheckBoxColumn DataGridViewComboBoxColumn等,
它们对应的控件TextBox、CheckBox、ComboBox在平常显示是并不存在,只是在编辑时,也就是EditingControlSho……
[/Quote]
你所说的我能明白 我已经试过自己画控件了 但是效果并不理想 所以我干脆也不打算隐藏了
呵呵 谢谢你的回答! 对我帮助不小 以后遇到这样的问题 不会再去钻牛角尖了 分就给你吧!
sdl2005lyx 2011-10-25
  • 打赏
  • 举报
回复
楼主,有一个概念你可以没有弄清楚:

所有DataGridViewColumn派生的列如DataGridViewTextBoxColumn,DataGridViewCheckBoxColumn DataGridViewComboBoxColumn等,
它们对应的控件TextBox、CheckBox、ComboBox在平常显示是并不存在,只是在编辑时,也就是EditingControlShowing事件触发后,有底层动态创建了这些控件,提过界面进行编辑!一旦编辑状态解释,这些控件就动态释放了!

你可以在其他事件里验证一下:呵呵DataGridView.EditingControl是不是null值!

所以,你的这个需求,必须自己控制去画这个控件!
gxtmm52300 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sdl2005lyx 的回复:]

注意:把列类型设置为默认的:DataGridViewTextBoxColumn
[/Quote]
问题同上~~
gxtmm52300 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sjfbtnmcn 的回复:]

单纯的 datagridviewcheckboxcolumn 列是没有办法做到隐藏的。
你可以把列和控件分开,用普通的列和 checkbox 组合成 datagridviewcheckboxcolumn 的效果,这样 checkbox 就可以隐藏和显示了。
[/Quote]
这个方法我也想到了 但是如何取得和判断checkbox控件的值呢?比如8楼所讲到的 只是画了一个checkbox在
列中,checkbox能作为对象使用吗?
sjfbtnmcn 2011-10-25
  • 打赏
  • 举报
回复
单纯的 datagridviewcheckboxcolumn 列是没有办法做到隐藏的。
你可以把列和控件分开,用普通的列和 checkbox 组合成 datagridviewcheckboxcolumn 的效果,这样 checkbox 就可以隐藏和显示了。
sdl2005lyx 2011-10-25
  • 打赏
  • 举报
回复
注意:把列类型设置为默认的:DataGridViewTextBoxColumn
sdl2005lyx 2011-10-24
  • 打赏
  • 举报
回复
这样可以:

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if(e.ColumnIndex==1 && e.RowIndex!=-1) //控制显示的列
{
bool val =Convert.ToBoolean(e.Value); //控制画checkbox的单元格
if(val)
{
e.Handled = true;
Rectangle rc = e.CellBounds;
ControlPaint.DrawCheckBox(e.Graphics, e.CellBounds, ButtonState.Checked);
}
}
}

gs0038 2011-10-24
  • 打赏
  • 举报
回复
你到猪八戒网去发你的任务,我来接你的问题
gs0038 2011-10-24
  • 打赏
  • 举报
回复
多少钱吧
gxtmm52300 2011-10-24
  • 打赏
  • 举报
回复
不要沉啊··求技术达人+思想家——!!
gxtmm52300 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wnyxy 的回复:]

不能隐藏吧
不过可以让它只读
dataGridView1.Rows[0].Cells["列1"].ReadOnly = true;
[/Quote]

我知道不能隐藏 只读好做 就没有办法让它不显示么
gxtmm52300 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zyloveyrf 的回复:]

DataGridView1.Columns["列"].Visible=false;
[/Quote]

请看清题目,不是整列的隐藏 是隐藏列中特定的几个单元格
WINFORM应该是不支持这功能的 现在寻求的是有没有方法可以
实现这样的效果
wnyxy001 2011-10-24
  • 打赏
  • 举报
回复
不能隐藏吧
不过可以让它只读
dataGridView1.Rows[0].Cells["列1"].ReadOnly = true;
萧炎 2011-10-24
  • 打赏
  • 举报
回复
DataGridView1.Columns["列"].Visible=false;

111,108

社区成员

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

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

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