2011-05-06 25 views
0

我想验证我的单元格是否在数据错误触发我的datagridview时处于何处。C#Datagridview开关中的列名称

这里是我的代码:

private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) 
{ 
    if (_licDataSet.LicenseFileTable.Rows(e.RowIndex).Columns(e.ColumnIndex) == "test") 

    switch (dataGridView1.CurrentCell.OwningColumn.Name) 
    { 
     case "AllowAsRemoteDesktopColumn" : 
     // do not think there are any checks for this column 
     // we'll find out shortly though! 
     break; 
     case dataGridView1.CurrentCell.OwningColumn.Name : 
     // ^^^ this errors with "A constant value is expected" 
     // do something 
     break; 
    } 
} 

我在^^^的位置,你可以从消息看示数。

我在做什么错?我认为自己的专栏名称在这一点上是不变的......?

帮助!

*** 编辑 *** 如何获取当前单元格的列名是我的问题,如果上述不起作用? *

回答

0

我最终创建了我期望值的枚举并引用它们。这是我可以保证是否改变了我得到编译错误的唯一方法。

0

您需要提供一个代表CurrentCell.OwningColumn.Name 可能为的值之一的常量。类似“anothervalue”,而不是对象的属性。

0

在c#switch语句的情况下,只能是'常量'文字,字符串和枚举。它不可能是阶级的财产或领域。 msdn链接:http://msdn.microsoft.com/en-us/library/06tc147t(v=vs.71).aspx

+0

我理解的开关部分,我没有得到这个角色是我如何获得当前单元格的列的名称,没有硬编码在... – ErocM 2011-05-06 03:45:32

+0

名也就是说你做了什么: 如果(dataGridView1 .CurrentCell.OwningColumn.Name == dataGridView1.CurrentCell.OwningColumn.Name) { //做某事 } – 2011-05-06 04:17:25

+0

这将始终是真实的。这就像说:如果a = a做某事... a总是等于自己... – ErocM 2011-05-06 13:08:53

0

您正在使用与开关检查相同的属性作为case语句。可能需要用default关键字替换第二个案例。