如何隐藏DataGridViewButtonCell

时间:2017-04-19 15:35:39

标签: vb.net datagridview cells datagridviewbuttoncolumn

我的You can turn off this, in config, example: <?xml version="1.0" encoding="UTF-8" ?> <phpunit bootstrap="application/tests/bootstrap.php" backupGlobals="false"> <testsuites> <testsuite name="TestSuite"> <directory>application/tests</directory> </testsuite> </testsuites> </phpunit> 中有DataGridViewButtonCell,我想将属性DataGridView设置为 True

我试过了:

Visible

不幸的是,它说属性DataGridView1.Rows("number of row i want").Cells("number of cell i want").Visible = True visible

以下是代码

read only

有谁知道我怎么做到这一点?

感谢。

2 个答案:

答案 0 :(得分:1)

这确实是一个透视问题。从程序员的角度来看,简单地忽略按钮点击我想要禁用的按钮非常容易,并且只需几行代码。

从用户角度来看,这种情况会像这样......用户点击看似有效的启用按钮,没有任何反应。用户没有为此编写代码...所以用户最多会认为计算机没有响应按钮点击或最坏情况...会认为你的编码技巧是可疑的!

如果按钮丢失,也会出现同样的情况。用户不会知道它为什么会丢失......但很可能会出现与上述非工作按钮相同的结论。

在另一个非常简单的方法中,假设所有按钮都已启用,我们有一个我们要禁用的按钮索引列表。用户按下其中一个按钮,我们检查禁用的按钮列表,如果单击的按钮是禁用的按钮,只需显示一个消息框以指示禁用此按钮的原因。这种方法告诉用户......“这里有一堆按钮,猜猜哪些按钮已启用”......

DataGridViewDisableButtonCellDataGridViewDisableButtonColumn包装器解决了上述所有问题...按钮是可见的,因此如果您将按钮设置为不可见并且显示为灰色,则用户不会问按钮的位置。 “灰色”是大多数用户理解的东西,并且将使用户不​​必“猜测”启用了哪些按钮。

您可以为两个类创建一个包装器:DataGridViewButtonCell和DataGridViewButtonColumn。

MS示例的链接How to: Disable Buttons in a Button Column in the Windows Forms DataGridView Control是我在使用C#之前使用的链接enter image description here,但链接上也有一个VB实现。

下面是使用MS链接中描述的两个包装器的结果的图片。为了进行测试,下面的图片使用按钮左侧的复选框来禁用右侧的按钮。

恕我直言,使用此策略是用户友好的。如果您只是使按钮不可见或只读,那么用户可能会认为您的代码搞砸了,并且没有清楚地了解为什么按钮丢失或不起作用。禁用按钮向用户指示该按钮不适用于该项目。一个选项是让鼠标滚动指示按钮被禁用的原因。

https://developer.android.com/training/system-ui/status.html

答案 1 :(得分:0)

没有实际隐藏DataGridViewButtonCell的方法。目前我只能看到两个选项:

  1. 使用填充移动按钮,如图here所示。我将提供类似的VB.NET代码
  2. Cell设置为DataGridViewTextBoxCell并将ReadOnly属性设置为 True
  3. 使用Padding

    Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        If DataGridView1.Rows(e.RowIndex).Cells(6).GetType() Is GetType(DataGridViewButtonCell) Then
            Dim columnWidth As Integer = DataGridView1.Columns(e.ColumnIndex).Width
    
            Dim newDataGridViewCellStyle As New DataGridViewCellStyle With {.Padding = New Padding(columnWidth + 1, 0, 0, 0)}
    
            DataGridView1.Rows(e.RowIndex).Cells(6).Style = newDataGridViewCellStyle
        End If
    End Sub
    

    使用DataGridViewTextBoxCell

    Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        If DataGridView1.Rows(e.RowIndex).Cells(6).GetType() Is GetType(DataGridViewButtonCell) Then
            Dim newDataGridViewCell As New DataGridViewTextBoxCell
    
            DataGridView1.Rows(e.RowIndex).Cells(6) = newDataGridViewCell
    
            newDataGridViewCell.ReadOnly = True
        End If
    End Sub
    

    这两个都应该为您提供不显示按钮的效果。