如何禁用在DataGridView中select的能力?
我想使用我的DataGridView
只显示的东西,我希望用户不能够从DataGridView
select任何行,字段或任何东西。
我怎样才能做到这一点?
我会去这个:
private void myDataGridView_SelectionChanged(Object sender, EventArgs e) { dgvSomeDataGridView.ClearSelection(); }
我不同意广泛的断言,没有DataGridView
应该是不可选的。 一些用户界面是为工具或触摸屏而build立的,并且允许select误导用户认为select实际上将它们放到某个地方。
在控件上设置ReadOnly = true
对于是否可以select单元格或行是没有影响的。 并且有设置Enabled = false
可视化和function缺点。
另一个select是将控件select的颜色设置为非select的颜色,但是如果恰巧是在操作单元格的背景颜色,那么此方法也会产生一些令人讨厌的结果。
您可以为所选单元格设置透明背景颜色,如下所示:
DataGridView.RowsDefaultCellStyle.SelectionBackColor = System.Drawing.Color.Transparent;
我通过将Enabled
属性设置为false
来解决这个问题。
使用DataGridView.ReadOnly
属性
MSDN示例中的代码说明了在主要用于显示的DataGridView
控件中使用此属性。 在这个例子中,控件的可视外观以几种方式定制, 控件被configuration为有限的交互性 。
观察示例代码中的这些设置:
// Set property values appropriate for read-only // display and limited interactivity dataGridView1.AllowUserToAddRows = false; dataGridView1.AllowUserToDeleteRows = false; dataGridView1.AllowUserToOrderColumns = true; dataGridView1.ReadOnly = true; dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.MultiSelect = false; dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None; dataGridView1.AllowUserToResizeColumns = false; dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; dataGridView1.AllowUserToResizeRows = false; dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;
这对我来说就像一个魅力:
row.DataGridView.Enabled = false; row.DefaultCellStyle.BackColor = Color.LightGray; row.DefaultCellStyle.ForeColor = Color.DarkGray;
(where row = DataGridView.NewRow(适当的重载);)
我发现设置所有AllowUser...
属性为false
, ReadOnly
为true
, RowHeadersVisible
为false
, ScollBars
为None
,然后伪装预防select对我最有效。 未将Enabled
设置为false
仍允许用户从网格复制数据。
当你想要一个简单的显示网格(假定行高度相同)时,下面的代码也清理了外观:
int width = 0; for (int i = 0; i < dataGridView1.Columns.Count; i++) { width += dataGridView1.Columns[i].Width; } dataGridView1.Width = width; dataGridView1.Height = dataGridView1.Rows[0].Height*(dataGridView1.Rows.Count+1);
Enabled
属性为false
要么
this.dataGridView1.DefaultCellStyle.SelectionBackColor = this.dataGridView1.DefaultCellStyle.BackColor; this.dataGridView1.DefaultCellStyle.SelectionForeColor = this.dataGridView1.DefaultCellStyle.ForeColor;
- 使用ConfigurationManager加载System.ServiceModelconfiguration部分
- 为什么(是不是真的?)列出<T>实现所有这些接口,而不仅仅是IList <T>?
- 通过C#中的对象属性循环
- “这个错误的创造者没有指定一个理由”exception
- 强制浮点在.NET中是确定性的?
- 可以在ASP.NET应用程序外部使用HttpRuntime.Cache吗?
- 如何从ISO 8601格式创build.NET DateTime
- CryptographicException在试图导出X509私钥的RSAParameters时“密钥无法在指定状态下使用”
- 哪个是首选的:可为空<>。HasValue或Nullable <>!= null?