有人可以帮助我为什么它不起作用?我有一个checkbox,如果我点击它,这应取消选中datagridview中的所有复选框,这些复选框在包括用户选中复选框之前已经过检查.
这是代码:
private void chkItems_CheckedChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow row in datagridview1.Rows)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells[1];
if (chk.Selected == true)
{
chk.Selected = false;
}
else
{
chk.Selected = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
不应选中该复选框.应该检查.
这是添加的列
DataGridViewCheckBoxColumn CheckboxColumn = new DataGridViewCheckBoxColumn();
CheckBox chk = new CheckBox();
CheckboxColumn.Width = 20;
datagridview1.Columns.Add(CheckboxColumn);
Run Code Online (Sandbox Code Playgroud) 我已将数据表绑定到a DataGridView,此数据表有一个名为"Status"的列,该列属于类型Boolean.我可以通过代码将值设置为true或者false正常.
但是,我无法弄清楚如何检查是否已经检查了给定的行.这是我试图使用的代码,并且编译它显示错误"指定的强制转换无效".
任何帮助,将不胜感激.
if (rowIndex >= 0)
{
var cbxCell = (DataGridViewCheckBoxCell)dgvScan.Rows[rowIndex].Cells["Status"];
if ((bool)cbxCell.Value)
{
// Do stuff
}
else
{
// Do other stuff
}
}
Run Code Online (Sandbox Code Playgroud) 我是编程和C#语言的新手.我被卡住了,请帮忙.所以我编写了这段代码(c#Visual Studio 2012):
private void button2_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[1].Value == true)
{
// what I want to do
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我收到以下错误:
运算符'=='不能应用于'object'和'bool'类型的操作数.
如此问题中所述,如果您希望在DataGridViewCheckBoxCell中显示复选框,则DataGridView(WinForm而不是WPF)中行的最小行高似乎为17 .任何较小的复选框都会消失!
有没有办法在DataGridView单元格中放置一个较小的复选框?
我在DataGridView的一个列中有复选框.
现在我遇到了一个问题:当我在Checkbox上单击一次时,它会发生变化但只是视觉上,在代码中它的值仍然设置为false.但是如果我点击Checkbox然后点击我的datagridview上的其他任何地方(或者在代码中手动更改其值为true),它会将其值更改为true.
如何在单击后强制我的复选框更改值?(检查复选框实际上没有检查它很烦人).
谢谢你的帮助.
我有DataGridView绑定数据表我有相同的复选框.
我想导航或循环遍历datagridview并选中标记这些复选框,下面是我使用的语法.
foreach(DataGridViewRow dr in dgvColumns.Rows)
{
DataGridViewCheckBoxCell checkCell =
(DataGridViewCheckBoxCell)dr.Cells["CheckBoxes"];
checkCell.Value=1;
//Also tried checkCell.Selected=true;
//Nothing seems to have worked.!
}
Run Code Online (Sandbox Code Playgroud) 我正在使用.NET Windows窗体DataGridView,我需要编辑一个DataBound列(绑定在布尔DataTable列上).为此,我指定像这样的单元格模板:
DataGridViewColumn column = new DataGridViewColumn(new DataGridViewCheckBoxCell());
你看我需要一个CheckBox单元格模板.
我面临的问题是该列始终是只读/禁用的,就好像它是TextBox类型一样.它根本不显示复选框.
有关如何使用DataGridView的可编辑复选框列的任何想法?
更新:对于Windows窗体,请.
谢谢.
我有一个 System.Windows.Forms DataGridView 绑定到List<MyObject>.
MyObject 类包含绑定到 DataGridView 中的 DataGridViewCheckboxCell 的布尔属性。
public class MyObject
{
public decimal DefaultValue {get; set; }
public bool HasCustomValue {get;set; }
public decimal CustomValue {get;set; }
public decimal CurrentValue
{
get
{
return HasCustomValue
? CustomValue
: DefaultValue;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我更改HasCustomValue另一个(只读)属性CurrentValue的值也会更改它的值。这是通过实现 INotifyPropertyChanged 事件来完成的(为了简单起见,我将该部分留在了源示例中)
如果我HasCustomValue从 DataGridView 外部更改,绑定到的列CurrentValue会立即更新。但是,如果用户启用/禁用复选框,HasCustomValue则不会在基础数据源中更改,除非他通过单击鼠标或按 TAB 键离开该列。
有没有办法在更改复选框值后强制网格直接更新数据源?
如果我绑定了一个控件属性,我可以设置为DataSourceUpdateMode,Windows.Forms.DataSourceUpdateMode.OnPropertyChanged但我在 DataGridView 中没有找到类似的东西
我在.Net应用程序中有一个DataGridView控件,其中包含一个复选框列.我希望用户能够编辑复选框.我遇到的问题是我在用户检查后无法检测到复选框的状态.
如果最初选中该复选框,则一旦DataGridViewCheckBoxCell获得焦点,它将立即返回.但是,如果我再次单击该复选框并取消选中它,则它仍然会返回选中状态.从那时起,它将始终返回检查,无论复选框的实际状态如何,直到它失去焦点并再次获得它.
同样,如果复选框最初未选中,那么当它获得焦点时,无论复选框的实际状态如何,它都将在click事件中返回未选中状态.
这是我的代码.
Private Sub grdTemplates_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdTemplates.CellContentClick
Dim strValue As String = ""
Try
If Me.grdTemplates.Columns(e.ColumnIndex).Name = "colCurrentTemplate" Then
'The user clicked on the checkbox column
strValue = Me.grdTemplates.Item(e.ColumnIndex, e.RowIndex).Value
'THIS VALUE NEVER CHANGES WHILE THE DataGridViewCheckBoxCell HAS FOCUS
Me.lblTemplates.Text = strValue
End If
Catch ex As Exception
HandleError(ex.ToString)
End Try
End Sub
Run Code Online (Sandbox Code Playgroud)
提前致谢,
麦克风
我有一个奇怪的问题。基本上我有一个 datagridview 和一个按钮。当我单击此按钮时,它会检查所有行的第 1 列值(复选框列)。然后它根据当前的情况将其设置为 true / false。
就这样吧。
但是,然后,我有另一个按钮可以对这些勾选的行执行某些操作。我单击它,它只将第一行标识为已勾选。其余的现在显然都无效了..?
那么,我如何以编程方式设置数据网格视图中复选框列的值,然后再次读取它,因为根据我的结果,我显然偏离了目标。
这会设置复选框,我可以看到它们,手动取消勾选它们等。
foreach (DataGridViewRow row in dgv.Rows)
{
var ch1 = new DataGridViewCheckBoxCell();
ch1 = (DataGridViewCheckBoxCell)row.Cells[0];
if (ch1.Value == null)
ch1.Value = false;
switch (ch1.Value.ToString())
{
case "True":
ch1.Value = false;
break;
case "False":
ch1.Value = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
然后检查值的下一个按钮就是查找空值
foreach (DataGridViewRow row in rows)
{
var ch1 = new DataGridViewCheckBoxCell();
ch1 = (DataGridViewCheckBoxCell)row.Cells[0];
if (ch1.Value == null)
ch1.Value = false;
switch (ch1.Value.ToString())
{
case "True":
ch1.Value = true; …Run Code Online (Sandbox Code Playgroud)