Использование событий в элементах управления окнами в IE - PullRequest
1 голос
/ 18 ноября 2008

Я создал элемент управления формы 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>

Ответы [ 2 ]

1 голос
/ 18 ноября 2008

Вы неправильно реализуете в своем классе CardReader:

public event Error;
public event Success;

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

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

Если ваш интерфейс ICardReaderEvents изменится на параметры Error и Success, то просто вызовите их в OnError и OnSuccess.

0 голосов
/ 18 ноября 2008

Итак, теперь вам нужно знать, как подключить его в Javascript? Вот как я знаю, как это сделать:

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

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

  function CR::Success()
  {
    alert("Success");
  }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...