如何在Gridview中使特定单元格可见,而不是完整列?

时间:2013-08-16 09:37:12

标签: c# winforms

我有一个包含3列的Gridview,最初在表单加载期间,只有两列可见,一列将有数据,另一列有复选框。

我希望当我检查特定单元格中的复选框时,对应于该复选框,第三列单元格将可见,我不想完成第3列以便在选中复选框时可见,Gridview是硬编码的,只有行是dymanic(column1,column2设置为visible,第3列设置为不可见)

在下面的图像中,当我检查复选框完成时,看到的列是可见的,这是我不想要的 enter image description here

enter image description here

任何人都可以帮助我吗?

我尝试了下面的代码,但它使第3列不可见,特定的单元格

public form1() 
{
    dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
}

void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    dataGridView1.Columns[e.ColumnIndex + 1].Visible = true;
}

3 个答案:

答案 0 :(得分:0)

那么你可以为此尝试RowCommand事件但是因为我看到你已经为复选框创建了事件,尝试找到特定行的行索引然后使用单元格编号(单元格[2])来查找控件并分配其属性as visible = false,

答案 1 :(得分:0)

这是我刚试过的演示。它似乎工作正常。整个想法是您无法隐藏DataGridView中的特定单元格。但是你可以隐藏它,因为普通的GUI引擎会在它想要隐藏任何控件/元素时使用(我想是这样)。您只需对其进行自定义,即可使用BackgroundColor的{​​{1}}绘制单元格。当然,为了使它工作,它并不容易。以下是您的代码:

DataGridView

这就是全部:)

enter image description here

答案 2 :(得分:0)

是的,实际上我们无法隐身,但我想以简单的方式对它进行一次探索。使用

datagridview.rows(e.rowindex).cells[your column name]=true ; 

使用它,它不允许用户在文本框中输入数据。如果它是假的,那么我们可以修改它/输入任何文本。

datagridview.rows(e.rowindex).cells[your column name].backcolour=color.gray/white/black;

使用此功能,我们可以将颜色填充到复选框为true / false时要绘制的特定文本框;