我在一个项目管理系统上工作,我在每个Datagrid行中都有一个按钮。当单击按钮时,应该打开您拥有该特定行的"路径"列的文件。我应该如何做到这一点。有没有一种方法可以使每一行都成为一个控件或其他东西?
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System;
using System.Diagnostics;
namespace Blender_Project_manager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Maindata.Rows.Add(addname.Text, addpath.Text);
}
private void Maindata_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}
我试过
private void Maindata_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
System.Diagnostics.Process.Start(path.ToString());
}
但最后却给了我一个错误,"系统找不到指定的文件"
2条答案
按热度按时间cu6pst1q1#
您的帖子有几个相关问题:
The system cannot find the file specified
可能有一个简单的解决方案可以避免该异常。请尝试使用以下语法打开文件:
由于很难说问题究竟出在哪里,我也会对你的问题提供一个全面的回答。
扑克牌图片来源:Boardgame pack v2(知识共享许可证),作者:肯尼Vleugels。
查找文件
如果这些文件是安装的一部分(在编译时已知),则可以通过设置“复制到输出目录”属性并将其引用为
另一方面,如果用户可以修改它们,则它们属于
定义行行为
为了 “使每一行成为[...]某物”,需要一个具有与DataGridView中的列对应的公共属性的类。该类将绑定到DataGridView的
DataSource
属性,例如,通过创建BindingList<Card>
。下面是一个最小的示例:在网格控件中创建按钮
在此示例中,DataGridView控件在加载MainForm的方法中初始化。由于没有与Open列对应的类属性,因此必须在从绑定自动生成列之后添加该属性。添加了一个处理程序,我们可以检查该处理程序以确定是否单击了按钮。
使按钮打开同一行上的文件路径
在处理程序中,通过索引从绑定的集合中检索卡片并获得完整路径,如果使用下面的语法,您可能会在
Process.Start
中获得更好的结果:w8f9ii692#
我建议在GridView中添加一个
DataGridViewButtonColumn
。下面是一个YouTube教程,介绍如何添加和使用此类列:https://www.youtube.com/watch?v=mCxAvQVpCH0
希望能有所帮助。