- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看起来像这样的数据库
如上图所示,除了 Month
之外的所有列都是 TinyInt(1)
并且 Month
是 Varchar
现在我这里有一个代码
Dim con1 As MySqlConnection = New MySqlConnection("server=192.168.2.87;userid=root;password=admin1950;database=inventory")
Dim sql1 As MySqlCommand = New MySqlCommand("Select * from ri_closure", con1)
Dim ds1 As DataSet = New DataSet
Dim adapter1 As MySqlDataAdapter = New MySqlDataAdapter
con1.Open()
adapter1.SelectCommand = sql1
adapter1.Fill(ds1, "MyTable")
DataGridView2.DataSource = ds1.Tables(0)
con1.Close()
ds1.Tables(0).Columns(2).DataType = GetType(Boolean)
Me.DataGridView2.Columns(1).Frozen = True
Dim i As Integer
For i = 0 To DataGridView2.Columns.Count - 1
DataGridView2.Columns.Item(i).SortMode = DataGridViewColumnSortMode.Programmatic
Next
DataGridView2.Columns(0).Visible = False
DataGridView2.Columns(1).DefaultCellStyle.BackColor = Color.LightBlue
现在是这个样子
现在您看到了输出,我相信您不想要那个红色的。刺激眼睛,这是我的代码
For Each rw As DataGridViewRow In DataGridView2.Rows
For ii As Integer = 2 To rw.Cells.Count - 1
If rw.Cells(ii).Value = False Then
rw.Cells(ii).Style.BackColor = Color.Red
ElseIf rw.Cells(ii).Value = True Then
rw.Cells(ii).Style.BackColor = Color.White
End If
Next
Next
现在这是我的问题,我希望这是可能的。我想做这样的事情而不是 uncked 并将单元格变成红色我怎样才能像这样制作 uncked 单元格。
它看起来与上图相同,而不是空复选框。
还有一个,我希望生成填充复选框的那个会替换未检查的值,因为我有检查那个复选框的代码。
我尝试了一些代码,这是输出
future 帮助的 TYSM
最佳答案
您可以通过处理 CellPainting
来自定义 DataGridViewCheckBox
列的绘制DataGridView
的事件。然后你可以使用CheckBoxRenderer
绘制所需状态的复选框。您要为复选框的未选中状态显示的状态是 CheckBoxState.MixedNormal
:
Private Sub CellPainting(ByVal sender As Object, _
ByVal e As DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
If (e.ColumnIndex = 0 AndAlso e.RowIndex >= 0) Then
Dim value = DirectCast(e.FormattedValue, Nullable(Of Boolean))
e.Paint(e.CellBounds, DataGridViewPaintParts.All And _
Not (DataGridViewPaintParts.ContentForeground))
Dim state = IIf((value.HasValue And value.Value), _
VisualStyles.CheckBoxState.CheckedNormal, _
VisualStyles.CheckBoxState.MixedNormal)
Dim size = RadioButtonRenderer.GetGlyphSize(e.Graphics, state)
Dim location = New Point((e.CellBounds.Width - size.Width) / 2, _
(e.CellBounds.Height - size.Height) / 2)
location.Offset(e.CellBounds.Location)
CheckBoxRenderer.DrawCheckBox(e.Graphics, location, state)
e.Handled = True
End If
End Sub
要测试解决方案,您可以通过这种方式向网格添加一列:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
Dim C1 = New DataGridViewCheckBoxColumn()
C1.DataPropertyName = "C1"
C1.HeaderText = "C1"
C1.TrueValue = 1
C1.FalseValue = 0
Me.DataGridView1.Columns.Add(C1)
Me.DataGridView1.Rows.Add(DirectCast(1, Object))
Me.DataGridView1.Rows.Add(DirectCast(0, Object))
Me.DataGridView1.AllowUserToAddRows = False
End Sub
这将是结果:
要在调用 CheckBoxRenderer.DrawCheckBox
后用红色绘制未选中(实际上是混合状态),请使用以下代码:
If (state = VisualStyles.CheckBoxState.MixedNormal) Then
Dim rect = New Rectangle(location, size)
rect.Inflate(-2, -2)
e.Graphics.FillRectangle(Brushes.Red, rect)
End If
关于.net - Datagridview 中的方形填充复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39545483/
我已经看到 Datagridview 不允许复制和粘贴多个单元格的文本,是否有一个简单的设置来启用它,或者我是否必须使用键处理程序和剪贴板数据存储来包含该功能。 用户想要在一行中复制 3 个单元格,并
我有一个 DataGridView我想限制用户只为特定列下的单元格输入数值的控件。我怎样才能在 DataGridView 中完成这种类型的验证细胞? 当我创建一个简单的文本框时是可能的,但是我如何验证
我正在尝试格式化 DataGridView,使用样式颜色等。DGV 在表单启动时加载(通过 buildGrid 方法),如构造函数代码中所示: public Report1(DataSet d
第一列中的小黑三角的官方DataGridView命名法描述是什么? 好像是标记了DataGridView.CurrentRow的位置,但是只是一个get属性,我想设置一下。 Grid with arr
我有点卡在我写的一些代码上 一个大纲是我正在从 SQL 数据库中读取一些数据,并希望将其显示在表单上的 DataGridView 中。我已经确认有数据从数据库返回,但不确定为什么没有出现。我遵循了互联
我的 DataTable从数据库中提取了三列,而我只需要将其中的两列绑定(bind)到 DataGridView .你能帮我吗? 最佳答案 这可能有用 DataSet ds = new DataSet
我有一个包含 Dataset ds 和 DataGridView dgv 的 WinForms 应用程序。 dgv 绑定(bind)到 ds。 ds 通过 Task() 更新,该 Task() 使用
我有DataGridView(dgHome),在parentForm(Home)中有一些列。子 Form(bill) 有 DataGridView(dgbill) 。我需要当我单击 dgHome 中的
我有两个具有相同列架构的 DataGridView(尽管有两个不同的 DataView 作为 DataSource - 如果这很重要)。将一行从一个数据 GridView 移动到另一个数据 GridV
基本上我有 2 个 DataGridView,我需要将行从一个复制到另一个。 到目前为止我已经尝试过: DataGridViewRowCollection tmpRowCollection = Dat
我正在尝试根据它包含的行数使我的 DataGridView 的高度自动调整。目前,我能够通过以下行完成此操作: dataGridView_SearchResults.AutoSize = true;
使用 WinForms、C# .Net 2.0 我正在向非绑定(bind) DataGridView 添加行。我想在其中一列中有一个 DataGridViewButtonColumn,在单击时删除该行
我有一个 datagridview(dataGridView1,其中包含一个 dataGridview2 列标题),其中我有一个复选框列,称为 dgvCkb,在 dataGridView1。当我在任何
对不起,如果这是一个愚蠢的问题。我在这方面很陌生。我应该如何将组合框添加到数据表,然后将其加载到数据 GridView 中?这可以做到吗?这是最好的方法吗?非常感谢有关如何执行此操作的提示和教程。先感
我正在尝试将 .txt 文件导入 DataGrid。问题是虽然代码大部分工作正常,但在导入 .txt 文件时,它会创建额外的行,例如 this ; OpenFileDialog ofd
datagridview 加载速度非常慢。我该如何优化它? datagridview有4-5千行。 我必须根据几个参数动态生成一个 datagridview。(来自数据库的数据,列数) 我必须从数据库
我怎样才能强制DataGridView.CellValueChanged DataGridViewCell.Value 立即引发事件(并将更改实际提交给 ComboBox 属性)单元格中的编辑控件更改
我有一个通过数据集从数据库中获取数据的功能 public DataSet getDataSet(string query) { DataSet ds = new DataSet()
客户希望能够键入一个字母并让系统滚动 DataGridView,这样具有与字母匹配的单元格的第一行将滚动到 DataGridView 的顶部 任何建议将不胜感激 最佳答案 我不确定您将如何有效地查找与
好吧,我有一个 DataGridView,用户可以在其中单击列标题进行排序。当他们在应用排序时添加新行时,直到验证该行时才会创建记录(在退出 newRow 之前他们无法执行此操作)。排序后如何才能选择
我是一名优秀的程序员,十分优秀!