2015-03-25 32 views
0

我正在製作一個小型應用程序供個人使用,以練習WPF和C#。應用程序將根據存儲在SQL表中的文件路徑啓動遊戲(或其他應用程序)。我的SQL連接工作正常,數據被檢索。基於DataGrid選擇值的Buttonclick事件

string query = "SELECT Title, [Path] FROM GOG.dbo.Games"; 

我正在使用DataGrid控件來顯示遊戲列表及其路徑。我有一個'Launch Game'按鈕,我想要獲取DataGrid中當前突出顯示的項目(即Path),然後獲取路徑字符串,並使用Process.Start()方法運行它。

這裏就是我對我的Button_Click,但我不能得到它的工作:

private void LaunchButton_Click(object sender, RoutedEventArgs e) 
{ 
    string gamePath = dataGrid1.SelectedItem.ToString(); 
    Process.Start(gamePath); 
} 

調試說:「gamePath‘System.Data.DataRowView’字符串」,而不是實際路徑的值例如:「C:\ Windows \ System32 \ calc.exe」,我想這是爲什麼應用程序錯誤地說「系統找不到指定的文件」,因爲「System.Data.DataRowView」當然不是有效的程序。

我怎樣才能把它通過正確的字符串,而不是「System.Data.DataRowView」?

+0

什麼是數據網格綁定? – 2015-03-25 11:29:41

回答

0

dataGrid1.SelectedItem給你System.Data.DataRowView對象。所以你可以直接使用它作爲字符串。你必須像下面那樣得到它的道路。

private void LaunchButton_Click(object sender, RoutedEventArgs e) 
{ 
    var row=dataGrid1.SelectedItem as System.Data.DataRowView; 
    if(row!=null) 
    { 
     string gamePath = row["Path"].ToString(); 
     Process.Start(gamePath); 
    } 
} 
+0

非常感謝您的解釋。這已經使它工作。 – Shuko 2015-03-25 11:34:30

0

投選定的DataGrid項目DataRowView

DataRowView row = (DataRowView)dataGrid1.SelectedItem; 

然後

row["ColumnName"];