我想知道是否可以在DataGrid中禁用特定的单元格编辑,而无需在Silverlight 4中禁用整个列的编辑.我可以将特定的单元格对象作为FrameworkElement获得,但它不包含属性IsReadOnly或IsEnabled.
您可能会问:为什么我需要那?好吧,我的应用程序需要根据其他单元格内容来禁用特定行中的单元格.每行都以这种方式分别检查.
如果您对如何实现这种不正常的行为有任何想法,请写信;)
解决方法:
如果您具有要禁用的一个或多个单元格的行,列索引:
int r = 2, c = 4;
然后,您可以监听事件CellEnter和CellLeave并执行以下操作:
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == r)
{
if (e.ColumnIndex == c)
{
dataGridView1.Columns[e.ColumnIndex].ReadOnly = true;
}
}
}
private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == r)
{
if (e.ColumnIndex == c)
{
dataGridView1.Columns[e.ColumnIndex].ReadOnly = false;
}
}
}
您仍然将整个列设置为“只读”,但是由于您在离开单元格后将其重置为原来的效果,因此看起来只对该单元格有效.