2015-03-25 48 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"];