【问题标题】:How to open a webpage when user clicks a button using windows forms application in c#? Should not open multiple pages when clicked again当用户在 c# 中使用 Windows 窗体应用程序单击按钮时如何打开网页?再次单击时不应打开多个页面
【发布时间】:2013-12-23 14:14:46
【问题描述】:

我有以下代码,当用户单击 Windows 窗体时会打开一个网页。问题:当网页打开时再次单击时,应用程序会打开网页的另一个实例,依此类推。当第一个网页处于活动状态时,如何限制应用程序不打开第二个网页? (就像在 javascript window.open("","myWindow","width=200,height=100");) 中 非常感谢任何帮助。

我的代码:

 private void btLogin_Click(object sender, EventArgs e)
        {
            try
            {
                System.Diagnostics.Process.Start(MyLink);
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
        }

【问题讨论】:

  • 一旦按钮被点击就禁用它?
  • 酷...喜欢...谢谢。

标签: c# winforms webpage buttonclick system.diagnostics


【解决方案1】:

你可以试试下面的代码,在打开浏览器之前,我们首先获取当前正在运行的浏览器进程(例如 Chrome)并遍历每个进程并比较MainWindowTitle。这个属性保存了打开的浏览器窗口的标题。如果目标 URL(带有标题)已经在运行,则忽略其余代码。

private void OpenBrowser()
{
    bool processStarted = false;

    Process[] processes = Process.GetProcesses();

    foreach (var item in processes)
    {
        if (item.MainWindowTitle.Equals("Google - Google Chrome", StringComparison.OrdinalIgnoreCase))
        {
            processStarted = true;
            break;
        }
    }

    if (!processStarted)
    {
        Process p = new Process();
        ProcessStartInfo info = new ProcessStartInfo();
        info.FileName = "chrome.exe";
        p.StartInfo = info;
        info.Arguments = "https://www.google.lk";
        p.Start();
    }
}

【讨论】:

  • 优秀!!!工作完美!..但是每当修改窗口标题时都需要更改..!
【解决方案2】:

如果要在应用程序中打开网页,则必须使用 WebBrowser 控件。将 WebBrowser 控件放在您的表单上,并将此代码添加到负责打开站点的按钮中:

例如.......................

       webBrowser1.Navigate("www.google.com");

【讨论】:

  • 您好 Hozefa,感谢您的回复。我不需要在应用程序中打开浏览器。它可以是一个网页,因为我需要引导用户从第三方网站输入登录凭据。
【解决方案3】:

您可以检测进程是否已终止,所以,只需这样做:

// verify if the process has exited
if(this.process != null && this.process.HasExited)
{
        Process p = new Process();
        ProcessStartInfo info = new ProcessStartInfo();
        info.FileName = "chrome.exe";
        p.StartInfo = info;
        info.Arguments = "https://www.google.lk";
        p.Start();
        // save the process in a variable
        this.process = p;
}

【讨论】:

    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多