我已经创建了一个windows窗体控件,它可以成功地托管在Internet Explorer中。我想给它一个事件,并且能够通过javascript响应这个事件。我在here上找到了一个关于它的链接。它向我展示了如何创建接口,但是我不确定如何从我的控件中触发事件?
下面是我的代码snippetS:
//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>发布于 2008-11-18 17:49:29
您在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中调用它们即可。
发布于 2008-11-18 19:31:31
那么,现在您需要知道如何在Javascript中挂接它了?下面是我知道如何做到这一点:
<object id="CR" ...></object>
<script type="text/javascript">
function CR::Error()
{
alert("Error!");
}
function CR::Success()
{
alert("Success");
}
</script>https://stackoverflow.com/questions/299497
复制相似问题