VS开发的COM组件(activex)的事件如何给JS触发?

Vicoman 2010-06-11 09:14:32
在控件里添加了自定义的事件 OnSelectionChanged



public class SelectionChangedEventArgs : EventArgs
{
Range m_range;

public SelectionChangedEventArgs(Range axSht)
{
m_range = axSht;
}

public Range Range
{
get { return m_range; }
}
}

public delegate void SelectionChangedHandler(Object sender, SelectionChangedEventArgs e);

//SelectionChanged事件
public event SelectionChangedHandler SelectionChanged;

protected virtual void OnSelectionChanged(Object sender, SelectionChangedEventArgs e)
{
if (SelectionChanged != null)
{
SelectionChanged( sender,e );
}
}

private void axSpreadsheet1_SelectionChange(object sender, EventArgs e)
{
AxSpreadsheet p = (AxSpreadsheet)sender;
Range r = p.Selection;
SelectionChangedEventArgs s = new SelectionChangedEventArgs(r);
if (p != null)
{
OnSelectionChanged(p, s);
}
}



对JavaScript不是很熟,在JavaScript里如何触发这个事件呢。。


<body bgcolor='#223344'>
<object id="ss"
classid="clsid:9551B223-6188-4387-B293-C7D9D8173E3A" OnSelectionChanged="SelectChange(这里怎么写?)">
</object>
</body>
</HTML>

<SCRIPT LANGUAGE="JavaScript">
<!--
function SelectChange(???)
{
alert("aaaa");
}
//-->
</SCRIPT>








...全文
396 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyiyong1689 2011-08-30
  • 打赏
  • 举报
回复
怎么处理啊,楼主,跪求,解决方案啊,我研究了几天了。。
yinqi025 2011-07-22
  • 打赏
  • 举报
回复
请问楼主是怎么处理的?
Vicoman 2010-06-12
  • 打赏
  • 举报
回复
事件可以用了。

自定义的属性还不能用。。。。。
Vicoman 2010-06-11
  • 打赏
  • 举报
回复
我想触发 自定义的控件 的 自定义的事件

iwxiaot 2010-06-11
  • 打赏
  • 举报
回复
嗯,在JS里用ID调用COM控件里函数就行了
捷哥1999 2010-06-11
  • 打赏
  • 举报
回复
button里面不就是用了javascript调用的?
Vicoman 2010-06-11
  • 打赏
  • 举报
回复
我想问的是事件传递的参数,就是自定义的控件事件如何跟JS交互
Vicoman 2010-06-11
  • 打赏
  • 举报
回复
回1楼:

这样是通过BUTTON来读取控件的属性,不是控件触发的事件。。
捷哥1999 2010-06-11
  • 打赏
  • 举报
回复
加载后,使用id去调用对象!
捷哥1999 2010-06-11
  • 打赏
  • 举报
回复
1、首先要加载这个Activex控件,例如
<object id="helloworld" 
classid="clsid:9551B223-6188-4387-B293-C7D9D8173E3E" codebase="Self.cab#version=1,3,0"
>
</object>


2、这样调用:
<input type="button" onclick="alert(helloworld.GetDefaultPrintStatus())" value="GetDefaultPrinterStatus"> 
jiezi316 2010-06-11
  • 打赏
  • 举报
回复
<script language="javascript" for="ID" event="SelectChange(args)">
alert("触发了xx事件");
</script>
jiezi316 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 vicoman 的回复:]
嗯,这种方法我知道,现在的问题是,这个控件是.NET开发的。
.NET的事件里有2个参数: object sender, EnventArgs e
(第一个sender是控件本身,第二个e是事件参数)

我不明白的是对于JS来说,如何使用自定义的事件?
[/Quote]
什么意思,不是已经再用自定义的事件了么?
jiezi316 2010-06-11
  • 打赏
  • 举报
回复
其实我用的OCX都是用VC开发的,开发COM有一定的标准,要想JS能够访问,需要实现一些接口。至于用C#来开发,以前有人说过。但我不是很了解了。不知道你是否研究过这问题。
你可以就按照一般的方式来处理试下。
Vicoman 2010-06-11
  • 打赏
  • 举报
回复
嗯,这种方法我知道,现在的问题是,这个控件是.NET开发的。
.NET的事件里有2个参数: object sender, EnventArgs e
(第一个sender是控件本身,第二个e是事件参数)

我不明白的是对于JS来说,如何使用自定义的事件?
jiezi316 2010-06-11
  • 打赏
  • 举报
回复
<script language="javascript" for="ID" event="SelectChange(args)">
xxxx
</script>
jiezi316 2010-06-11
  • 打赏
  • 举报
回复
我仔细回忆了下,JS我也做过一次,嘿嘿。
貌似是用的<SCRIPT FOR="">那种方式,然后下面就直接定义事件函数就完了。我当时也是网上找的。之所以后来改用了VBS主要是因为JS中的变量都是指,而VBS的变量是引用,引用可以用来返回值。而我那OCX有些方法需要返回值,所以后来改了。
jiezi316 2010-06-11
  • 打赏
  • 举报
回复
我知道楼主的意思,你是想触发JS定义的自定义函数,而且要传写参数给这个函数,对吧。
我以前也做过,但我后来改用了vbs,由于VBS对于函数并不需要注册,所以直接定义个函数就完了。JS你可以考虑看看!
VBS中:
比如你的事件是SelectionChange(args)
那么VBS直接定义个 SelectionChange(args)的函数就可以了。对于OBJECT标签那里也不需要写这样的OnSelectionChanged="SelectChange()"的代码!

当ACTIVEX触发SELECTIONcHANGE事件,就自动执行到你定义的函数里去了,参数也有哈!

Vicoman 2010-06-11
  • 打赏
  • 举报
回复
顶顶顶顶顶顶顶顶顶

110,967

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧