2014-01-09 58 views
0

我正在構建一個應用程序,我使用的是需要參數「級別」設置爲金,銀或銅的.dll。級別是.dll中的公共枚舉級別。指定的演員表無效 - DataGridView

要選擇黃金,銀色或青銅色我想從dataGridView中讀取,以便每次我想要更改它時都不需要編輯源代碼,但是我總是收到unhandles異常指定的轉換無效。

這是我的代碼。

var testLevel = dataGridView1.Rows[0].Cells[2].Value == null ? Level.All : (Level)(dataGridView1.Rows[0].Cells[2]).Value; // exception occurs on this line 
var searchParameters = new PlayerSearchParameters 
{ 
    Level = testLevel, 
}; 

所以,我怎麼能去製作從DVG不正確讀取的問題水平?

謝謝。

編輯:我用comboBoxes測試過它,它工作的很好,但我真的很喜歡它通過DGV工作。

+0

什麼是'dataGridView1.Rows [0] .Cells [2] .Value == null'的值嗎? – Satpal

+0

沒有人知道你在隱藏在這些單元格中的東西:)檢查調試器中有什麼! – SOReader

回答

3

您需要使用Enum.Parse將字符串解析爲您需要的枚舉。

Level levelValue = (Level) Enum.Parse(typeof(Level), (dataGridView1.Rows[0].Cells[2]).Value); 

還可以使用支票String.IsNullOrEmpty代替dataGridView1.Rows [0] .Cells [2] .value的== NULL

舉個例子,你可以使用:

Level levelValue;   
var value = dataGridView1.Rows[0].Cells[2]).Value; 
if (Enum.IsDefined(typeof(Level), value)) 
    levelValue = (Level) Enum.Parse(typeof(Level), value) 
else 
    levelValue = Level.All