2008-11-18 73 views
1

我創建了一個可以在Internet Explorer中成功託管的窗體控件。我想給它一個事件,並能夠通過JavaScript迴應事件。我找到了一個關於它的鏈接here。它向我展示瞭如何創建界面,但我不確定如何從我的控制中觸發事件?在IE託管的窗體控件中使用事件

這裏是我的代碼片段:

//Control Code: 
public class CardReader : Panel,ICardReaderEvents, ICardReaderProperties 
{ 
    public void Error() 
    { 
    } 
    public void Success() 
    { 
    } 
} 

//Interface for events 
[Guid("DD0C202B-12B4-4457-9FC6-05F88A6E8BC5")] 
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] 
public interface ICardReaderEvents 
{ 
    [DispId(0x60020000)] 
    void Error(); 

    [DispId(0x60020001)] 
    void Success(); 
} 

//Interface for public properties/methods 
public interface ICardReaderProperties 
{ 
    ... 
} 

//JavaScript to handle events 
<SCRIPT FOR="CardReader1" EVENT="Error"> 
    window.status = "Error..."; 
</SCRIPT> 

<SCRIPT FOR="CardReader1" EVENT="Success"> 
    window.alert("Success"); 
    window.status = ""; 
</SCRIPT> 

回答

1

要實現它錯在你的讀卡器類:

public event Error; 
public event Success; 

protected void OnError() 
{ 
    if(Error != null) 
     Error(); 
} 

protected void OnSuccess() 
{ 
    if(Success != null) 
     Success(); 
} 

如果您ICardReaderEvents界面更改有錯誤,併成功帶參數,然後就打電話給他們在OnError和OnSuccess中。

+0

謝謝。那麼,事件處理程序何時設置?我檢查了用戶控件的Load事件並且事件處理程序仍然是空的,所以要麼我沒有得到正確的東西,要麼還沒有設置。 – Jeremy 2008-11-18 19:16:58

+0

查看我的下一個答案 – 2008-11-18 19:31:42

0

所以,現在你需要知道如何掛鉤在Javascript中?這裏是我怎麼知道該怎麼做的:

<object id="CR" ...></object> 

<script type="text/javascript"> 
    function CR::Error() 
    { 
    alert("Error!"); 
    } 

    function CR::Success() 
    { 
    alert("Success"); 
    } 
</script> 
相關問題