DataGridViewCheckBoxCell 类型的 DataGridView 列始终处于只读/禁用状态
我正在使用 .NET Windows 窗体 DataGridView,并且需要编辑 DataBound 列(绑定在布尔 DataTable 列上)。 为此,我指定这样的单元格模板:
DataGridViewColumn column = new DataGridViewColumn(new DataGridViewCheckBoxCell());
您会看到我需要一个复选框单元格模板。
我面临的问题是该列始终处于只读/禁用状态,就好像它是 TextBox 类型一样。 它根本不显示复选框。
关于如何使用 DataGridView 的可编辑复选框列有什么想法吗?
更新:对于 Windows 表单,请。
谢谢。
I am using a .NET Windows Forms DataGridView and I need to edit a DataBound column (that binds on a boolean DataTable column). For this I specify the cell template like this:
DataGridViewColumn column = new DataGridViewColumn(new DataGridViewCheckBoxCell());
You see that I need a CheckBox cell template.
The problem I face is that this column is constantly readonly/disabled, as if it would be of TextBox type. It doesn't show a checkbox at all.
Any thoughts on how to work with editable checkbox columns for DataGridView?
Update: For windows forms, please.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
创建一个 TemplateField 并将 id 绑定到它,如下所示:
Create a TemplateField and bound the id to it, something like this:
不要尝试在代码中创建列,而是单击 DataGridView 控件右上角框中的小箭头,然后从出现的菜单中选择“编辑列...”。 在对话框中,单击“添加”按钮,然后选择“数据绑定列”选项并选择要绑定到的布尔列。
Instead of trying to create the column in code, click on the tiny arrow in a box at the top right of the DataGridView control, and select "Edit Columns..." from the menu that appears. In the dialog box, click the Add button, then choose the "Databound column" option and pick the boolean column you're binding to.
好吧,经过4个多小时的调试,我发现DataGridView行高太小,无法绘制复选框,所以根本没有显示。 我在意外调整行高后发现了这一点。
作为解决方案,您可以将 AutoSizeRowsMode 设置为 AllCells。
richDataGrid.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
Well, after more than 4 hours of debugging, I have found that the DataGridView row height was too small for the checkbox to be painted, so it was not displayed at all. I have found this after an accidental row height resizing.
As a solution, you can set the AutoSizeRowsMode to AllCells.
richDataGrid.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;