簡體   English   中英

在IE托管的Windows窗體控件中使用事件

[英]Using events in IE hosted windows form controls

我創建了一個Windows窗體控件,該控件可以成功托管在Internet Explorer中。 我想給它一個事件,並能夠通過javascript響應該事件。 我在這里找到了一個談論它的鏈接。 它顯示了如何創建接口,但不確定如何從控件中觸發事件?

這是我的代碼段:

//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>

您在CardReader類中實現了錯誤:

public event Error;
public event Success;

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

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

如果您的ICardReaderEvents接口更改為具有“錯誤”和“成功”作為參數,則只需在OnError和OnSuccess中對其進行調用。

那么,現在您需要知道如何將其掛接到Javascript中嗎? 這是我怎么知道的方法:

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

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

  function CR::Success()
  {
    alert("Success");
  }
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM