2011-06-15 84 views
0

有什么办法可以让一些细胞在DataGridView中不可见?使细胞可见DataGridView WinForms C#

基本上我制作了一个发票应用程序,其中某些单元格在使用特定设置时没有意义。 我目前制作的这些单元格只有ReadOnly,没有任何价值,但如果它们变得不可见/透明,它将会很酷。

任何免费的第三方控制也将做!

+0

重新创建与'DataGridView'控制在一定程度上是不明智的Microsoft Excel中。不,没有隐藏单个细胞的内置方式。微软并不打算让你重新创建Excel。 – 2011-06-15 15:10:48

+0

为什么重新创建Excel? – 2011-06-15 15:12:20

+0

呵呵,我不是在创建Excel,只是在每一行中会有2/3的单元格没有用处,如果用户看不到它们会更好。 – 2011-06-15 15:12:36

回答

1

Akshay,想一想,隐藏网格/表格中的单元格意味着什么?

最终你会“添加”一行或一列,有点像excel允许你做,但是单个单元格,预期的行为是什么?

将单元格设置为不可见的情况下,仍会在该位置渲染一个矩形,在白色或黑色上呈现白色或黑色,而不管其他背景/地面颜色的其他组合如何,您仍然会在网格中看到至少一个“洞”。

我不知道一个具体的方式来做任何网格,将单元格设置为只读和清除内容应该有足够的帮助,如果你真的需要其他东西,最终你的网格不是很好的使用你的想法正在做它,aka应该有更少的行或列,或者应该改变在页面中有多个较小的网格。

+0

也许不可见的单元格将DataGridView放置在其上的窗体的颜色? – 2011-06-15 15:20:05

+0

所以你想要一个洞!:-P – 2011-06-15 15:20:50

+0

是一个洞,有可能吗? – 2011-06-15 15:22:38

0

我不认为这是可能的。

我不知道你已经试过了,看看http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcell.aspx,看看是否有任何属性可以用作解决方法,特别是Style属性。

看一看,http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcellstyle.aspx。是否将字体颜色设置为与背景相同的值?

+1

这是只读!MSDN:获取一个值,指示单元格是在一行或一列已被隐藏。 – 2011-06-15 15:17:51

+0

在发送之前先读取它......它说:“获取一个值,指示该单元格是否在被隐藏的行或列中。”不完全是他需要的。 – 2011-06-15 15:18:28

+1

傻了。我会更新其他建议! – Connell 2011-06-15 15:18:42

2

起初,我不认为这样的事情是可能的,你可以让行或列不可见。 单元格的Visible属性是只读的,不能在DataGridView中更改,但是一个人here指出了一个显示为here(没有提供源代码)的自定义实现,本质上他所做的是禁用单元并重写OnPaint方法DataGridViewCell的。

+1

SparseDataGridView在哪里? – 2011-06-15 15:32:48

+0

作者没有提供源代码,但指出他做了什么,禁用了单元,然后重写了OnPaint方法 – 2011-06-15 15:54:52

+0

来自作者:“解决方案是制作自己的SparseDataGridViewCell,从DataGridViewTextBoxCell派生并覆盖OnClick和Paint。 OnClick是用于禁用鼠标和绘画不能绘制各种东西,但背景和边框。“ – 2011-06-15 15:56:30

0

我建议让forecolor与背景颜色相同,不要忘记selectionforecolor与您希望隐藏的每个单元格的selectionbackcolor相同。

所以:

MyGrid.rows(0).cells(0).Style.ForeColor = MyGrid.rows(0).cells(0).Style.BackColor 
MyGrid.rows(0).cells(0).Style.SelectionForeColor = MyGrid.rows(0).cells(0).Style.SelectionBackColor