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

时间:2022-12-11 14:45:25
我的datagridview中有一行为datagridviewcheckboxcolumn列 想根据判断语句隐藏列中某些单元格中的checkbox 请问有什么方法?

15 个解决方案

#1


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

#2


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

#3


引用 1 楼 zyloveyrf 的回复:
DataGridView1.Columns["列"].Visible=false;


请看清题目,不是整列的隐藏 是隐藏列中特定的几个单元格
WINFORM应该是不支持这功能的 现在寻求的是有没有方法可以
实现这样的效果

#4


引用 2 楼 wnyxy 的回复:
不能隐藏吧
不过可以让它只读
 dataGridView1.Rows[0].Cells["列1"].ReadOnly = true;


我知道不能隐藏 只读好做 就没有办法让它不显示么

#5


不要沉啊··求技术达人+思想家——!!

#6


多少钱吧

#7


你到 猪八戒网去发你的任务,我来接你的问题

#8


这样可以:

        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);  
                }
            }
        }

#9


注意:把列类型设置为默认的:DataGridViewTextBoxColumn

#10


单纯的 datagridviewcheckboxcolumn 列是没有办法做到隐藏的。
你可以把列和控件分开,用普通的列和 checkbox 组合成 datagridviewcheckboxcolumn 的效果,这样 checkbox 就可以隐藏和显示了。

#11


引用 10 楼 sjfbtnmcn 的回复:
单纯的 datagridviewcheckboxcolumn 列是没有办法做到隐藏的。
你可以把列和控件分开,用普通的列和 checkbox 组合成 datagridviewcheckboxcolumn 的效果,这样 checkbox 就可以隐藏和显示了。

这个方法我也想到了 但是如何取得和判断checkbox控件的值呢?比如8楼所讲到的 只是画了一个checkbox在
列中,checkbox能作为对象使用吗?

#12


引用 9 楼 sdl2005lyx 的回复:
注意:把列类型设置为默认的:DataGridViewTextBoxColumn

问题同上~~

#13


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

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

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

所以,你的这个需求,必须自己控制去画这个控件!

#14


引用 13 楼 sdl2005lyx 的回复:
楼主,有一个概念你可以没有弄清楚:

所有DataGridViewColumn派生的列如DataGridViewTextBoxColumn,DataGridViewCheckBoxColumn DataGridViewComboBoxColumn等,
它们对应的控件TextBox、CheckBox、ComboBox在平常显示是并不存在,只是在编辑时,也就是EditingControlSho……

你所说的我能明白 我已经试过自己画控件了 但是效果并不理想 所以我干脆也不打算隐藏了 
呵呵 谢谢你的回答! 对我帮助不小 以后遇到这样的问题 不会再去钻牛角尖了 分就给你吧!  

#15


“以后遇到这样的问题 不会再去钻牛角尖了 分就给你吧!”
说的好,有时候我们过于在于界面的显示了,其实对用户来说,简单、实用、明了!

#1


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

#2


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

#3


引用 1 楼 zyloveyrf 的回复:
DataGridView1.Columns["列"].Visible=false;


请看清题目,不是整列的隐藏 是隐藏列中特定的几个单元格
WINFORM应该是不支持这功能的 现在寻求的是有没有方法可以
实现这样的效果

#4


引用 2 楼 wnyxy 的回复:
不能隐藏吧
不过可以让它只读
 dataGridView1.Rows[0].Cells["列1"].ReadOnly = true;


我知道不能隐藏 只读好做 就没有办法让它不显示么

#5


不要沉啊··求技术达人+思想家——!!

#6


多少钱吧

#7


你到 猪八戒网去发你的任务,我来接你的问题

#8


这样可以:

        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);  
                }
            }
        }

#9


注意:把列类型设置为默认的:DataGridViewTextBoxColumn

#10


单纯的 datagridviewcheckboxcolumn 列是没有办法做到隐藏的。
你可以把列和控件分开,用普通的列和 checkbox 组合成 datagridviewcheckboxcolumn 的效果,这样 checkbox 就可以隐藏和显示了。

#11


引用 10 楼 sjfbtnmcn 的回复:
单纯的 datagridviewcheckboxcolumn 列是没有办法做到隐藏的。
你可以把列和控件分开,用普通的列和 checkbox 组合成 datagridviewcheckboxcolumn 的效果,这样 checkbox 就可以隐藏和显示了。

这个方法我也想到了 但是如何取得和判断checkbox控件的值呢?比如8楼所讲到的 只是画了一个checkbox在
列中,checkbox能作为对象使用吗?

#12


引用 9 楼 sdl2005lyx 的回复:
注意:把列类型设置为默认的:DataGridViewTextBoxColumn

问题同上~~

#13


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

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

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

所以,你的这个需求,必须自己控制去画这个控件!

#14


引用 13 楼 sdl2005lyx 的回复:
楼主,有一个概念你可以没有弄清楚:

所有DataGridViewColumn派生的列如DataGridViewTextBoxColumn,DataGridViewCheckBoxColumn DataGridViewComboBoxColumn等,
它们对应的控件TextBox、CheckBox、ComboBox在平常显示是并不存在,只是在编辑时,也就是EditingControlSho……

你所说的我能明白 我已经试过自己画控件了 但是效果并不理想 所以我干脆也不打算隐藏了 
呵呵 谢谢你的回答! 对我帮助不小 以后遇到这样的问题 不会再去钻牛角尖了 分就给你吧!  

#15


“以后遇到这样的问题 不会再去钻牛角尖了 分就给你吧!”
说的好,有时候我们过于在于界面的显示了,其实对用户来说,简单、实用、明了!