首页 > 解决方案 > VB.NET:DataGridView 同一列中的不同按钮

问题描述

我正在尝试初始化一个检查器,该检查器检查datagridview中某一列的单元格,如果单元格等于StaffMixname那么按钮文本应该是VIEW如果不是那么按钮文本是LOCKED

到目前为止,这是我的代码。

Dim dgButtonColumn As New DataGridViewButtonColumn
Dim i As Integer
MetroGrid7.Columns.Add(dgButtonColumn)
dgButtonColumn.HeaderText = "Security"
dgButtonColumn.UseColumnTextForButtonValue = True
For i = 0 To MetroGrid7.Rows.Count
    If MetroGrid7.Rows(i).Cells.Item(4).Value.ToString() = StaffMixname.Text Then
       dgButtonColumn.Text = "VIEW"
       dgButtonColumn.Name = "viewBtn"
       dgButtonColumn.ToolTipText = "View"
    Else
       dgButtonColumn.Text = "LOCKED"
       dgButtonColumn.Name = "searchSecurityBtn"
       dgButtonColumn.ToolTipText = "LOCKED"
    End If
Next

在此处输入图像描述

我想要的结果是这样的 在此处输入图像描述

标签: vb.net

解决方案


它不像这样工作。在DataGridViewButtonColumn每个单元格中都包含一个button但您无法访问它。你可以得到DataGridViewButtonCell和改变这两个属性value and ToolTipText。中没有name财产DataGridViewButtonCell。所以要改变它们:

Dim dgButtonColumn As New DataGridViewButtonColumn
Dim i As Integer
MetroGrid7.Columns.Add(dgButtonColumn)
dgButtonColumn.HeaderText = "Security"
'remove this line
'dgButtonColumn.UseColumnTextForButtonValue = True
For i = 0 To MetroGrid7.Rows.Count
    If MetroGrid7.Rows(i).Cells.Item(4).Value.ToString() = StaffMixname.Text Then
       MetroGrid7.Rows(i).Cells.Item(6).Value = "VIEW"
       MetroGrid7.Rows(i).Cells.Item(6).ToolTipText = "View"
    Else
       MetroGrid7.Rows(i).Cells.Item(6).Value = "LOCKED"
       MetroGrid7.Rows(i).Cells.Item(6).ToolTipText = "LOCKED"
   End If
Next

推荐阅读