WinForm与脚本的交互

 这是去年学习SmartClient时写下的,有兴趣可以看看
    将Winform Control嵌入IE,很多时候需要JS脚本与Control进行交互。一方面是在脚本中使用控件的属性,调用控件的方法,另外一方面是脚本中能够响应控件的事件。对于第一个问题较为简单,我们还可以在脚本中使用控件属性的值,也可以给属性赋值,也可以调用控件的方法。

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1、 脚本中传参数,使用控件的属性,调用控件方法

1)在控件Test_JsUseCtrl.cs中,添加textBox1,定义属性Str,如

     private string str;

     public string Str

     {

          get{return str;}

         set{     str = value;textBox1.Text = value;}

}

2)定义public方法用于显示textBox1内容如

     public void ShowText()

     {

          MessageBox.Show(textBox1.Text,"TextBox的内容,MessageBoxButtons.OK,MessageBoxIcon.Information);

}

3)在页面添加TextBox,Button等,点击Button1可以将页面输入值赋给控件属性,点击Button2可以调用控件方法

function Button1_onclick() {

Test_JsUseCtrl.Str = Text1.value;

}

function Button2_onclick() {

Test_JsUseCtrl.ShowText();

}

 

上面部是点击或者触发页面控件事件来获得控件的属性和方法,下面部分就是控件通过事件来调用脚本中的方法,即在脚本中响应控件事件。

 

2JS脚本中响应控件事件

1)在控件中添加接口ClickEvent

     // Source interface for events to be exposed

     // Add GuidAttribute to the source interface to supply an explicit System.Guid.

     // Add InterfaceTypeAttribute to indicate that interface is the IDispatch interface.

     [System.Runtime.InteropServices.GuidAttribute("0422D916-C11A-474e-947D-45A107038D12") ]

     [System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIDispatch)]

     public interface ControlEvents

         // Add a DisIdAttribute to any members in the source interface to         // specify the COM DispId.

     {

          [System.Runtime.InteropServices.DispIdAttribute(0x60020000)]

         void ClickEvent(int x, int y);

     }

 

2、为控件添加属性   

// Add a ComSourceInterfaces attribute to the control to identify        //the list of interfaces that are exposed as COM event sources.

     [System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None),System.Runtime.InteropServices.ComSourceInterfaces(typeof(ControlEvents))]

     public class MyWindowControl : System.Windows.Forms.UserControl //, ComInteropControlInterface

2、  Button的Click事件中调用接口方法

     if (ClickEvent != null)

     {

          ClickEvent(0, 0);

}

3、  JS脚本中响应接口事件

function ctrl::ClickEvent(a,b)

{

alert(String(a)+"+"+String(b));

}

脚本响应控件的事件稍微复杂 

注:如果弹出关于安全方面的提示,把IE->安全->信任站点s->自定义级别下的,“对没有标记为安全的ActiveX控件进行初始化和脚本运行”,设为启用。(上面的思路就是将Control作为ActiveX)

参考:

http://chs.gotdotnet.com/quickstart/winforms/doc/WinFormsIeSourcing.aspx

HOW TO: Sink Managed C# Events in Internet Explorer Script

PRB: Security Exception When You Use Event Handlers in Internet Explorer       

转载于:https://www.cnblogs.com/Sniper/archive/2004/08/09/31339.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我用AI大模型帮我写公众号赚钱!

文 |卖萌酱大家好&#xff0c;我是卖萌酱。最近太忙了&#xff0c;有很多想写的文章&#xff0c;但实在精力匮乏。怎么办&#xff0c;不能停更吧&#xff1f;就在这时&#xff0c;卖萌酱听到了一个新名词&#xff1a;AIGC。什么意思呢&#xff1f;我们知道互联网上的早期内容&a…

Nacos部署中的一些常见问题汇总

开个帖子&#xff0c;汇总一下读者经常提到的一些问题 问题一&#xff1a;Ubuntu下启动Nacos报错 问题描述 使用命令sh startup.sh -m standalone启动报错&#xff1a; ./startup.sh: 78: ./startup.sh: [[: not found./startup.sh: 88: ./startup.sh: [[: not found./startu…

土木工程正在沦为“天坑”专业…

文 | 羿阁&#xff08;发自凹非寺&#xff09;源 | 量子位一份转专业录用名单&#xff0c;直接把土木工程推向了舆论焦点。事情是这样的。前不久&#xff0c;湖南大学公示了2022年本科生转专业的一份名单。然后网友们惊奇地发现&#xff0c;土木工程学院共转出98人&#xff0c;…

Spring Cloud Alibaba基础教程:Nacos的集群部署

前情回顾&#xff1a; 《Spring Cloud Alibaba基础教程&#xff1a;使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程&#xff1a;支持的几种服务消费方式》《Spring Cloud Alibaba基础教程&#xff1a;使用Nacos作为配置中心》《Spring Cloud Alibaba基础教程&a…

智能客户端研究笔记(三)

本文大量引用了别人的文章&#xff0c;引用自http://www.microsoft.com/china/community/program/originalarticles/TechDoc/smartclient.mspx发布程序 1、在发布和更新服务器上设置一个虚拟目录&#xff08;如&#xff1a;SmartClient&#xff09;将应用组件的所有文件放置…

3月14日 我用Python几十行代码为女朋友画了一个爱心

今天是个特殊的日子&#xff0c;圆周率日&#xff0c;哈哈&#xff01;来对你爱的人表达爱吧&#xff01; 女朋友就是我爱人啦&#xff01;&#x1f601; # -*- coding:utf-8 -*- # Python Version: 3.7 # Time: 2020/3/14 13:14 # Author: Michael Ming # Website: https://m…

Pytorch显存分配机制与显存占用分析方法

文 | Connolly知乎&#xff08;已授权&#xff09;源 | 极市平台作者最近两年在研究分布式并行&#xff0c;经常使用PyTorch框架。一开始用的时候对于PyTorch的显存机制也是一知半解&#xff0c;连蒙带猜的&#xff0c;经常来知乎上来找答案&#xff0c;那么我就吸收大家的看法…

Spring Cloud Stream 使用延迟消息实现定时任务(RabbitMQ)

应用场景 我们在使用一些开源调度系统&#xff08;比如&#xff1a;elastic-job等&#xff09;的时候&#xff0c;对于任务的执行时间通常都是有规律性的&#xff0c;可能是每隔半小时执行一次&#xff0c;或者每天凌晨一点执行一次。然而实际业务中还存在另外一种定时任务&am…

LeetCode 1380. 矩阵中的幸运数(set)

1. 题目 给你一个 m * n 的矩阵&#xff0c;矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。 幸运数是指矩阵中满足同时下列两个条件的元素&#xff1a; 在同一行的所有元素中最小在同一列的所有元素中最大 示例 1&#xff1a; 输入&#xff1a;matrix …

GARFIELD@10-07-2004

tit for tat转载于:https://www.cnblogs.com/rexhost/archive/2004/10/07/49560.html

DeepMind 发了篇论文,把我看笑了

文 | severus近日&#xff0c;曾开发出举世瞩目的 AlphaGo 的 DeepMind&#xff0c;在 ArXiv 上发表了一篇文章&#xff0c;名为&#xff1a;Meaning without reference in large language models文中提到&#xff0c;大参数规模的语言模型是已经具备了部分类人智能的&#xff…

Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)

应用场景 前两天我们已经介绍了两种Spring Cloud Stream对消息失败的处理策略&#xff1a; 自动重试&#xff1a;对于一些因环境原因&#xff08;如&#xff1a;网络抖动等不稳定因素&#xff09;引发的问题可以起到比较好的作用&#xff0c;提高消息处理的成功率。自定义错误…

LeetCode 1382. 将二叉搜索树变平衡(中序遍历+二分递归)

1. 题目 给你一棵二叉搜索树&#xff0c;请你返回一棵 平衡后 的二叉搜索树&#xff0c;新生成的树应该与原来的树有着相同的节点值。 如果一棵二叉搜索树中&#xff0c;每个节点的两棵子树高度差不超过 1 &#xff0c;我们就称这棵二叉搜索树是 平衡的 。 如果有多种构造方…

电影:『新警察故事』

【电影名称】&#xff1a;『新警察故事』 【主 演】&#xff1a; 成龙 谢霆锋 杨采妮 蔡卓妍 吴彦祖  【导 演】&#xff1a; 陈木胜 【内容简介】&#xff1a;《新警察故事》是成龙英皇电影公司的处女作&#xff0c;投资超过1亿6000万港元&#xff0c;请来香港顶尖电影…

NLP顶级赛事LIC2022霸榜经验分享!

语言是人类传递信息最重要的媒介&#xff0c;让机器理解语言并进行交互是人工智能的重要挑战。为推动语言与智能领域的技术发展和应用&#xff0c;中国中文信息学会、中国计算机学会和百度公司连续五年联合举办“语言与智能技术竞赛”&#xff0c;为中文NLP研究者和开发者提供同…

Spring Cloud Zuul中使用Swagger汇总API接口文档

有很多读者问过这样的一个问题&#xff1a;虽然使用Swagger可以为Spring MVC编写的接口生成了API文档&#xff0c;但是在微服务化之后&#xff0c;这些API文档都离散在各个微服务中&#xff0c;是否有办法将这些接口都整合到一个文档中&#xff1f;之前给大家的回复都只是简单的…

LeetCode 1381. 设计一个支持增量操作的栈(deque/数组)

1. 题目 请你设计一个支持下述操作的栈。 实现自定义栈类 CustomStack &#xff1a; CustomStack(int maxSize)&#xff1a;用 maxSize 初始化对象&#xff0c;maxSize 是栈中最多能容纳的元素数量&#xff0c;栈在增长到 maxSize 之后则不支持 push 操作。void push(int x)…

GARFIELD@10-31-2004

apprentice转载于:https://www.cnblogs.com/rexhost/archive/2004/10/31/59013.html

Spring Cloud构建微服务架构:分布式服务跟踪(入门)【Dalston版】

通过之前的N篇博文介绍&#xff0c;实际上我们已经能够通过使用它们搭建起一个基础的微服务架构系统来实现我们的业务需求了。但是&#xff0c;随着业务的发展&#xff0c;我们的系统规模也会变得越来越大&#xff0c;各微服务间的调用关系也变得越来越错综复杂。通常一个由客户…

有哪些值得计算机专业学生加入的国企?

文 |重庆搬砖喵知乎知乎上最近有个问题很火&#xff1a;有哪些值得计算机专业学生加入的国企&#xff1f;这个问题确实很应今年秋招的景&#xff0c;于是转载了知乎答主重庆搬砖喵 的高赞回答分享给大家。原回答链接&#xff1a;https://www.zhihu.com/question/285730093/answ…