Button Click事件基于DataGrid选择的值

时间:2015-03-25 10:38:00

标签: c# wpf events datagrid selecteditem

我正在制作一个小型的个人用途应用程序来练习WPF和C#。应用程序将基于存储在SQL表中的文件路径启动游戏(或其他应用程序)。我的SQL连接正常,数据被检索。

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

我正在使用DataGrid控件来显示游戏列表及其路径。我有一个“启动游戏”按钮,我想获取DataGrid中当前突出显示的项目(即路径),然后获取路径字符串,因此使用Process.Start()方法运行它。

这是我在Button_Click上的内容,但我无法让它工作:

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

Debug说“gamePath”System.Data.DataRowView“string”,而不是实际路径的值,例如:“C:\ Windows \ System32 \ calc.exe”我认为这就是为什么应用程序错误地说“系统找不到指定的文件“因为”System.Data.DataRowView“当然不是有效的程序。

如何让它通过正确的字符串代替“System.Data.DataRowView”?

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

DataGrid的所选项目投放到DataRowView

DataRowView row = (DataRowView)dataGrid1.SelectedItem; 

然后

row["ColumnName"];