winforms 如何在C#窗体中添加DataGridView链接?

ztigrdn8  于 2023-04-21  发布在  C#
关注(0)|答案(1)|浏览(194)

嗨,我保存在数据库中的用户文件的地址,我想当用户点击他们从他们的系统文件是打开的。
这是我的Linq Queay:

public IEnumerable<object> readPaging(int page, int perPage, string search = null, string searchType = null)

{

    DB db = new DB();
        var q = (from i in db.Contentss
                 select new
                 {
                     image = i.image,
                     title = i.title,
                     address = i.address,
                     date = i.date
                 }
                           ).OrderByDescending(i => i.date).Skip((page - 1) * perPage).Take(perPage).ToList();
        return q;
    
}

这是我的fill datagrid视图函数:

private void dataGridFill(IEnumerable<object> list)
    {

    dataGridViewX1.DataSource = null;
    //dataGridViewX1.DataSource = list;
    dataGridViewX1.RowTemplate.Height = 150;

    // image Column
    DataGridViewImageColumn imageColumn = new DataGridViewImageColumn();
    dataGridViewX1.Columns.Add(imageColumn);
    imageColumn.HeaderText = "تصویر";
    ((DataGridViewImageColumn)dataGridViewX1.Columns[0]).ImageLayout = DataGridViewImageCellLayout.Stretch;
    dataGridViewX1.Columns[0].Width = 150;
    imageColumn.Name = "image";

    // link Column
    DataGridViewLinkColumn titleColumn = new DataGridViewLinkColumn();
    dataGridViewX1.Columns.Add(titleColumn);
    titleColumn.HeaderText = "عنوان";
    titleColumn.Name = "title";

    foreach (var item in list)
    {
        int index = dataGridViewX1.Rows.Add();
        

        dataGridViewX1.Rows[index].Cells["image"].Value = (byte[])item.GetType().GetProperty("image").GetValue(item, null);

        string text = (string)item.GetType().GetProperty("title").GetValue(item, null);
        string link = (string)item.GetType().GetProperty("address").GetValue(item, null);

        string linkHtml = "<a href=\"" + link + "\">" + text + "</a>";
        dataGridViewX1.Rows[index].Cells["title"].Value = linkHtml;



    }
}

问题我想显示标题为文本和地址作为链接,以便用户可以点击它们并打开文件.但运行后gridview显示我的linkHtml内容,当我点击它什么也没发生,没有文件打开.如何可以解决这个问题?注意:文件可以是各种类型,但大多数是txt和doc。

gpfsuwkq

gpfsuwkq1#

this article中,您可以使用DataGridView.CellContentClickDataGridView.CellClick事件来打开文件或处理其他逻辑。

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex] is DataGridViewLinkColumn && e.RowIndex != -1)
    {
        //object value = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
        //File.Open()
    }
}

相关问题