2016-07-05 43 views
0

我嘗試通過單擊ChromiumWebBrowser中的按鈕來更改winform中label1的文本,但該文本沒有更改。如何通過點擊ChromiumWebBrowser中的按鈕來改變winform控件的合法性?

Form1.cs中的代碼:

private void Form1_Load(object sender, EventArgs e) 
{ 
    browser = new ChromiumWebBrowser("http://localhost/pro/test.html") 
    { 
    Dock = DockStyle.Fill, 
    }; 
    this.panel1.Controls.Add(browser); 
    browser.RegisterAsyncJsObject("callbackObj", new Form1()); 
} 

public void changeText() 
{ 
    this.InvokeOnUiThreadIfRequired(() => label1.Text = "show me the money"); 
} 

的test.html中的代碼:

<script type="text/javascript"> 
var change = function() { 
    callbackObj.changeText(); 
} 
</script> 
<button id="test-btn" onclick="change()">click me to change text of label1</button> 
+1

避免使用'Form'結合所有方法和屬性將可能暴露。創建一個對象並傳入一個對你的表單的引用(一個簡單的代理)。 – amaitland

+0

感謝您的建議。我會改進我的代碼。 – ladrianbo

回答

0

供您註冊表單對象,你是一個新的不可見的形式。嘗試傳遞「this」來代替當前可見的實例。

即,

browser.RegisterAsyncJsObject("callbackObj", this); 
+1

非常感謝,我太笨了 – ladrianbo

相關問題