我构建了相同的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");
}
答案 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
事件。