在 c# 和 ms 访问中使用 DataGridView 超链接有困难

Posted

技术标签:

【中文标题】在 c# 和 ms 访问中使用 DataGridView 超链接有困难【英文标题】:Having difficulty with DataGridView hyperlink on c# and ms accesss 【发布时间】:2019-10-31 10:16:44 【问题描述】:

我在 c# 中有 winform,其中包含显示我的数据库中的表的 datagridview。其中一列是超链接数据类型。但链接似乎无法正确显示。例如http://google.com 在列上显示为#http://google.com#。问题是: 如何从我的超链接列中删除 #? 如何使链接可访问?我的意思是,每当我点击时,链接都会在浏览器中打开。这是pic的示例

【问题讨论】:

数据库中是否有井号字符?他们应该在数据库中吗?也许问题是错误地将英镑放入数据库的代码。 检查您的数据库中链接的存储方式。至于你问题的第二部分,请查看How to handle the click event of DataGridViewLinkColumn,祝你好运。 我查了数据库,链接没问题,没有#号。我猜它的数据类型有问题,因为它是微软访问的超链接。 【参考方案1】:

需要单独设置链接栏。

我写了一个工作代码示例,你可以看看。

代码:

 private void Form1_Load(object sender, EventArgs e)
        
            DataGridViewLinkColumn col1 = new DataGridViewLinkColumn();
            dataGridView1.Columns.Add(col1);
            dataGridView1.Columns[0].Name = "Links";

            DataGridViewRow dgvr = new DataGridViewRow();
            dgvr.CreateCells(dataGridView1);

            DataGridViewCell linkCell = new DataGridViewLinkCell();
            linkCell.Value = @"http:\\www.google.com";
            dgvr.Cells[0] = linkCell;

            dataGridView1.Rows.Add(dgvr);
        

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        
            if (dataGridView1.Columns[e.ColumnIndex] is DataGridViewLinkColumn && !(e.RowIndex == -1))
            
                Process.Start(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
            
        

【讨论】:

感谢您的回答。其实我终于想通了。实际问题出在数据库上,并且已经修复。

以上是关于在 c# 和 ms 访问中使用 DataGridView 超链接有困难的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 问题中访问受密码保护的 MS 访问数据库

如何使用 c# 将数据表值添加到 ms 访问表

如何使用 C# 仅将日期(不包括时间)插入 ms 访问数据库

如何在 C# 中使用 Microsoft.Office.Interop.Excel.Application 保存打开的文档?

无法根据访问令牌对用户进行身份验证 - MS Graph API C#

从 ms 访问中获取表数