我做了一个winform应用程序。当我在visual studio中运行应用程序时,以下代码可以打开来自function get_user () {
$result = (array)$this->db->get('users_table')->result();
}
链接列的链接。
DataGridView
但是当我安装构建并尝试做同样的事情时,没有任何反应。我还需要做任何其他设置。
请帮忙。
答案 0 :(得分:4)
如果您想从DataGridView
打开链接链接,您实际上应该传递网址而不是网络浏览器,即:
System.Diagnostics.Process.Start(grdRelLinks.Rows[e.RowIndex].Cells[2].Value.ToString());
最终会尝试使用默认的操作系统浏览器打开给定的URL。 Ofc确保来自url的url链接格式正确。
如果chrome.exe
无法启动,可以尝试缩短一个:chrome
?
您是否还可以确认Win+R
(a.k.a。Run...
)然后chrome.exe
实际打开 Chrome ?
如果没有,你能检查一下吗?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\
包含chrome.exe
条目?
如果是这样,也许网址格式错误?
答案 1 :(得分:0)
您可以使用以下代码段在浏览器中打开网址:
Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = "http://google.com";
process.Start();
或
System.Diagnostics.Process.Start("http://google.com");
在您的示例中,要允许用户从DataGridView启动它,您应该只需定义一个这样的点击事件:
private void grdRelLinks_CellContentClick(object pSender, DataGridViewCellEventArgs pArgs)
{
if (pArgs.RowIndex > -1 && pArgs.ColumnIndex == 2)
{
string url = grdRelLinks.Rows[pArgs.RowIndex].Cells[pArgs.ColumnIndex].Value.ToString();
if(!string.IsNullOrWhiteSpace(url))
System.Diagnostics.Process.Start(url);
}
}
答案 2 :(得分:0)
这对我有用。
private void OnGridViewContentClick(object sender, EventArgs e)
{
string chromeExePath = CheckIfChromeIsInstalled();
if (!string.IsNullOrEmpty(chromeExePath))
{
MessageBox.Show("Yayy Chrome.exe was found !");
//Path is not null:
Process.Start(chromeExePath, "http://www.google.de");//Here you can also enter the URL you get from your GridView
string url = grdRelLinks.Rows[e.RowIndex].Cells[2].Value.ToString();
if(!url.StartsWith("http")
{
url = $"http://{url}";
}
Process.Start(chromeExePath, url);
}
else
{
MessageBox.Show("Chrome.exe not found");
}
}
private string CheckIfChromeIsInstalled()
{
DirectoryInfo programFiles = new DirectoryInfo(Environment.GetEnvironmentVariable("PROGRAMFILES"));//Find your Programs folder
DirectoryInfo[] dirs = programFiles.GetDirectories();
List<FileInfo> files = new List<FileInfo>();
Parallel.ForEach(dirs, (dir) =>
{
files.AddRange(dir.GetFiles("chrome.exe", SearchOption.AllDirectories)); //Search for Chrome.exe
});
//files should only contain 1 entry
//Return path of chrom.exe or null
return (files.Count > 0) ? files[0].FullName : null;
}
注意:在额外的线程中启动它可能很有用!
编辑:
您能否检查cmd.exe
是否适用于chrome.exe "your URL"
?