根据特定匹配隐藏某些按钮

时间:2012-05-06 03:34:14

标签: c# winforms

如果符合以下规则,是否有隐藏某些按钮? 以下是用于创建按钮列的代码和用于获取匹配的代码。

我试过BookButtonCell.Visible = false;,但它说它只是只读。

感谢。

 private void Form1_Load(object sender, EventArgs e)
     {          
            DataGridViewButtonColumn bookbutton = new DataGridViewButtonColumn();
            {
                bookbutton.HeaderText = "Book";
                bookbutton.Text = "Book";
                bookbutton.Name = "Book";
                bookbutton.UseColumnTextForButtonValue = true;
            }
            readalleventsdataGridView.Columns.Add(bookbutton); 


                int x = 0;
                foreach (DataGridViewRow gridRow in readalleventsdataGridView.Rows)
                {
                    DataGridViewCell BookButtonCell = gridRow.Cells["Book"];
                    DataGridViewCell EndDateCell = gridRow.Cells["EndDate"];
                    String StrTodayDate = DateTime.Now.ToString("dd/MM/yy");
                    DateTime TodayDate = Convert.ToDateTime(StrTodayDate);
                    String StrEndDate = EndDateCell.Value.ToString();
                    DateTime EndDate = Convert.ToDateTime(StrEndDate);
                    int result = DateTime.Compare(EndDate, TodayDate);
                    if (result < 0)
                        {
                          What Commands To Hide The Button?
                        }
                        x++;
                    }
        }

5 个答案:

答案 0 :(得分:2)

DataGridViewButtonColumn Visible属性是ReadOnly属性。

即使它看起来像一个按钮,它仍然是DataGridViewButtonColumn,具有相同的可见性规则。所以缺点是你需要做一些像Ravi建议的那样或者处理DataGridView.CellContentClick事件测试,或者不应该按下按钮,如果没有,就会吞下事件。

从上面链接:

  

此属性指示单元格是否位于中   其Visible属性设置为false。

答案 1 :(得分:1)

您正在寻找可以设置为.Visible的{​​{1}}媒体资源。

答案 2 :(得分:1)

其他人已经写过没有visible属性。但是有一个简单的伎俩,我今天发现并在同一主题的另一篇文章中给出答案(另一个实际上是这个的重复):
https://stackoverflow.com/a/29010384/2505186
摘要:
为这些单元格指定不同的DataGridViewCellStyle,其中样式的padding属性左侧值设置为高于列宽的值。
这会使按钮移出单元格的可见区域。 : - )

答案 3 :(得分:0)

yourButton.Visible=false, which will hide the button from displaying

你可以这样尝试

 if (result < 0)
{
  BookButtonCell.Visible=false;
}

编辑:对于您的Gridview,您可以查看此Disable Button in Gridview

答案 4 :(得分:0)

如您所知,您无法更改datagridview单元格的可见性。

您必须禁用行或列。如果你在脑海中画出它,你会发现如果一个gridviewcell不可见,它就不好看了。

如此可见是datagridviewcell的只读属性 使用此代码

DataGridViewButtonCell dgvbc = new DataGridViewButtonCell();
            dgvbc.ReadOnly = true;

另一种方法是将单元格的前景或背景更改为用户无法使用的颜色:)

至少使用此代码,您可以禁用该按钮。