Winform自定义控件在网页上的应用
研究了一阵子C#版WorldWind,大家知道WorldWind是桌面程序,突然提了一个新需求,就是在IE里面运行WorldWind,对于java版的WorldWind来说可能比较容易,C#版的还真费神,我的做法是把WorldWindow以及自己的写的插件全部封装在一个winform自定义控件中,然后再把这个控件加载到webform上,效果非常好。
现在写一个简单的例子总结一下winform自定义控件在webform上使用的步骤。
一、制作winform自定义控件。
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace EventSourceCtrl
{
public delegate void Start(Boolean Restart);
public delegate void Stop();
public delegate void Pause();
[GuidAttribute("1A585C4D-3371-48dc-AF8A-AFFECC1B0967")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
public interface ButtonEvents
{
[DispId(0)]
void DoStart(Boolean Restart);
[DispId(1)]
void DoStop();
[DispId(2)]
void DoPause();
}
public interface IDoNetEventInScript
{
void SetCaption(string Value);
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(ButtonEvents))]
[Guid("5649B9CC-07BA-432a-A392-532EE2AFD190")]
public partial class sourceCtrl : UserControl, IDoNetEventInScript
{
public event Start DoStart;
public event Stop DoStop;
public event Pause DoPause;
public sourceCtrl()
{
InitializeComponent();
}
private void button1_Click_1(object sender, EventArgs e)
{
if (DoStart != null)
{
DoStart(true);
}
}
private void button2_Click(object sender, EventArgs e)
{
if (DoPause != null)
{
DoPause();
}
}
private void button3_Click(object sender, EventArgs e)
{
if (DoStart != null)
{
DoStart(false);
}
}
private void button4_Click(object sender, EventArgs e)
{
if (DoStop != null)
{
DoStop();
}
}
IDoNetEventInScript 成员
}
}
超级简单的一个例子,没什么好说的,要注意的是控件类前面的几个属性[ComVisible(true)]和[Guid("5649B9CC-07BA-432a-A392-532EE2AFD190")]是必须的。
二、用Visual Studio 2005命令提示注册控件到全局缓存,注意用windows的cmd.exe进行注册不行,不认识命令。
注册命令是:regasm /codebase fullpath,其中codebase是必须的,要不然即使注册成功也不会在IE上显示。如图:
三、将注册好的控件放在网页上
<head>
<title>DotNetEventInScript</title>
</head>
<body>
<object id= "eventSource"classid="clsid:5649B9CC-07BA-432a-A392-532EE2AFD190" width=100% height=100% align=alClient>
</object>
<script type="text/javascript">
function eventSource::DoStart(Restart)
{
alert("DoStart");
}
function eventSource::DoStop()
{
alert("DoStop");
}
function eventSource::DoPause()
{
alert("DoPause");
}
</script>
</body>
</html>
测试看看,效果不错吧!
转载于:https://www.cnblogs.com/top5/archive/2010/03/25/1696210.html
Winform自定义控件在网页上的应用相关推荐
- 从“在winform里打开网页功能”引发的问题探究
今天有个同事问了一下我,怎么在winform里面打开网页啊?我们都是基于B/S的开发,很少接触winform,所以我当时就懵了,实在不知道怎么回答,所以索性说不知道.但是我又想了想,这个应该是个很简单 ...
- (三十二)c#Winform自定义控件-表格
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- html5调用本地控件exe,网页上如何判断本地是否安装某个应用程序(js实现)
@顾晓北: 你可能没说清楚,网页启动客户端检测客户端,项目由网页部分及客户端程序部分组成,网页上有一个进入按钮,如果客户端安装了,点击按钮直接打开客户端程序,如果未安装则提示消息提醒安装客户端程序,类 ...
- asp.net实现在网页上自动显示超链接以及Email地址
人们总喜欢在帖子中加上各种有用的URL链接或Email地址.而笔者当初设计时没有考虑到这一点,使得这些URL链接或Email地址只能以文字的形式而并不是以超链接的形式显示,其它浏览帖子的人还必须把这些 ...
- 使用php读写mysql数据库并显示到网页上
由于工作的原因,需要了解下bs模式下的读写数据库的流程,将试验过程梳理一下. 我采用的是phpstudy搭建数据库,mysql数据库已经搭建完成,名称为2018版本,如下图: 由于我前期安装过apac ...
- java 使用正则表达式从网页上提取网站标题
如何从网页上抓取有价值的东西?看懂了下面的程序(非常简单),想从网页上抓取什么信息(标题.内容.Email.价格等)就能抓取什么信息. package catchhtml; import java.i ...
- [IE技巧] 禁止/允许显示网页上Flash的小插件
一个很小的插件工具, 用于禁止/允许显示网页上的Flash: http://flash.melameth.com/togflash.html 转载于:https://blog.51cto.com/w ...
- 如何从网页上下载Flash?
不知道大家是否遇到过,因为看到某个网页上精美的FLASH而苦于无法下载呢?不像图片之类的可以点右键,然后图片另存为就可以很顺利的保存下来.而在FLASH上点右键却保存不了,很是郁闷.现在就向大家介绍两 ...
- 3D模型在网页上显示
3D模型在网页上显示,这绝对是未来的趋势,也是热门.一部"阿凡达"让电影节发生了一次地震,让人们感到3D的时代到来.那么我们IT界呢?如果各位因工作时间繁忙,或者嫌上海世博会人山人 ...
- HTML5网页上播放mp4失败的原因
HTML5网页上播放mp4失败的原因 这个不错: https://blog.csdn.net/jacke121/article/details/84568802 解决方法1: FFMPEG -i ...
最新文章
- python创建csv文件并写入-Python 将数据写入文件(txt、csv、excel)
- 数据库系统概论:第二章 关系数据库
- poj3320Jessica's Reading Problem—尺取法(java)
- 双指针解决力扣两/三数之和问题
- REVERSE-PRACTICE-BUUCTF-13
- docker配置容器运行jar包
- 计算机专业能评电子工程师吗,计算机工程师职称 评定条件
- 【Flink】Flink 写入 kafka 报错 Failed to send data to Kafka: Expiring 4 record(s) for 20001 ms has passed
- 汕头创易计算机科技,汕头文创设计下一个“爆款”在哪?汕大优秀毕业生分享创作心得...
- Mongodb c#增删改查
- 如何调试SharePoint中XsltListViewWebPart的XSL
- DevExpress XtraGrid网格控件示例四:初始化新建行的单元格
- SQL Azure 服务器端架构
- 软件园区网络设计之网络详细设计
- 强大的火狐插件(转)
- 850pro测试软件,新极速霸主诞生 三星850 PRO首发评测
- 锁的等级:方法锁、对象锁、类锁
- 为浏览器添加Bing搜索引擎
- 质量功能配置(QFD)矩阵
- 电脑WIN XP蓝屏错误代码大全查询
热门文章
- 解决问题--java.lang.ClassNotFoundException -- redis抛出
- 教你编写高质量的 Java 代码!
- Spring MVC 中集成 Apache Shiro 安全框架
- 好开心,明天就上班了
- 不随意付钱,不随意签字。
- ubuntu13.10安装mysql_Ubuntu 10.10 源码安装MySQL 5.1.34
- pythonforeverybody中文版_PyTorch实现EverybodyDanceNow
- python人脸比对算法_Python的人脸识别,欧式距离比对,机器训练,人脸采集,离线识别...
- MyBatis 基础知识
- dedecms 中变量函数