2011-05-06 30 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關鍵字替換第二個案例。