如何在运行winform应用程序后调用函数

时间:2015-12-28 10:58:40

标签: c# .net winforms

我构建了相同的win表单,在此之后我需要运行runMyfunction打开一些webBrowser的网站,但这不会发生。

然后我运行runMyfunction,所有停止,当我调试它时它停留在

Application.Run(new Form1());

我在这里缺少什么?这是我的代码:

namespace UmbWin
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            //I tried this also
            //Form1 myForm = new Form1();
            //myForm.Show();
            //myForm.runMyfunction()- doesn't do anything

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }  
    }
}
public Form1()
{
    InitializeComponent();
}
[STAThread]
private void Form1_Load(object sender, EventArgs e)
{
    string authHeader = "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)";
    webBrowser.Navigate("https://www.test.com/Default.aspx", null, null, authHeader);

    runMyfunction();
}      
public void runMyfunction()
{
    //here where it stops and does nothing
    HtmlElement head = webBrowser.Document.GetElementById("123");
    HtmlElement scriptEl = webBrowser.Document.CreateElement("script");
}

1 个答案:

答案 0 :(得分:4)

这是因为Application.Run只有在应用程序的主要表单关闭后才会完成。

Application.Run运行消息循环(它会检查点击和其他Windows事件。如果你不知道这一切是什么意思,请阅读Windows / Win32的工作原理)。它意味着永远运行。

runMyfunction只会在Navigate来电后运行一次<div class="col-md-12"> <form method="post" class="form-horizontal" action="" style=""> <div class="col-md-3"> <strong>Table name</strong> <input type="text" class="form-control" name="table_name" required> <br> </div> <div class="col-md-3"> <strong>Number of Columns</strong> <input type="text" class="form-control" name="table_column" required> </div> </form> <div class="col-md-1"> <br> <button type="" class='btn btn-primary load_table' >Create </button> </div> </div> 。这就是全部。如果您想在每次导航后运行它,请订阅DocumentCompleted事件。