Winform自定义控件在网页上的应用

摘要:
在研究了一段时间的C#版本的WorldWind之后,我们都知道WorldWind是一个桌面程序。突然,一个新的要求被提出了,那就是在IE中运行WorldWind。这对于Java版本的WorldWind来说可能更容易。C#版本非常费力。我的方法是将WorldWindow和我在winform自定义控件中编写的插件打包,然后将该控件加载到webform中。效果很好。现在编写一个简单的示例,总结在webform上使用winform自定义控件的步骤。

研究了一阵子C#版WorldWind,大家知道WorldWind是桌面程序,突然提了一个新需求,就是在IE里面运行WorldWind,对于java版的WorldWind来说可能比较容易,C#版的还真费神,我的做法是把WorldWindow以及自己的写的插件全部封装在一个winform自定义控件中,然后再把这个控件加载到webform上,效果非常好。

现在写一个简单的例子总结一下winform自定义控件在webform上使用的步骤。

一、制作winform自定义控件。

Winform自定义控件在网页上的应用第1张using System;
Winform自定义控件在网页上的应用第1张
using System.Collections.Generic;
Winform自定义控件在网页上的应用第1张
using System.ComponentModel;
Winform自定义控件在网页上的应用第1张
using System.Drawing;
Winform自定义控件在网页上的应用第1张
using System.Data;
Winform自定义控件在网页上的应用第1张
using System.Text;
Winform自定义控件在网页上的应用第1张
using System.Windows.Forms;
Winform自定义控件在网页上的应用第1张
Winform自定义控件在网页上的应用第1张
using System.Runtime.InteropServices;
Winform自定义控件在网页上的应用第1张
Winform自定义控件在网页上的应用第1张
Winform自定义控件在网页上的应用第1张
namespace EventSourceCtrl
Winform自定义控件在网页上的应用第13张
{
Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张    
public delegate void Start(Boolean Restart);
Winform自定义控件在网页上的应用第14张    
public delegate void Stop();
Winform自定义控件在网页上的应用第14张    
public delegate void Pause();
Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张    [GuidAttribute(
"1A585C4D-3371-48dc-AF8A-AFFECC1B0967")]
Winform自定义控件在网页上的应用第14张    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
Winform自定义控件在网页上的应用第14张    
public interface ButtonEvents
Winform自定义控件在网页上的应用第22张    
{
Winform自定义控件在网页上的应用第14张        [DispId(
0)]
Winform自定义控件在网页上的应用第14张        
void DoStart(Boolean Restart);
Winform自定义控件在网页上的应用第14张        [DispId(
1)]
Winform自定义控件在网页上的应用第14张        
void DoStop();
Winform自定义控件在网页上的应用第14张        [DispId(
2)]
Winform自定义控件在网页上的应用第14张        
void DoPause();
Winform自定义控件在网页上的应用第29张    }

Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张    
public interface IDoNetEventInScript
Winform自定义控件在网页上的应用第22张    
{
Winform自定义控件在网页上的应用第14张        
void SetCaption(string Value);
Winform自定义控件在网页上的应用第29张    }

Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张    [ComVisible(
true)]
Winform自定义控件在网页上的应用第14张    [ClassInterface(ClassInterfaceType.None)]
Winform自定义控件在网页上的应用第14张    [ComSourceInterfaces(
typeof(ButtonEvents))]
Winform自定义控件在网页上的应用第14张    [Guid(
"5649B9CC-07BA-432a-A392-532EE2AFD190")]
Winform自定义控件在网页上的应用第14张    
public partial class sourceCtrl : UserControl, IDoNetEventInScript
Winform自定义控件在网页上的应用第22张    
{
Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张        
public event Start DoStart;
Winform自定义控件在网页上的应用第14张        
public event Stop DoStop;
Winform自定义控件在网页上的应用第14张        
public event Pause DoPause;
Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张        
public sourceCtrl()
Winform自定义控件在网页上的应用第22张        
{
Winform自定义控件在网页上的应用第14张            InitializeComponent();
Winform自定义控件在网页上的应用第29张        }

Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张        
private void button1_Click_1(object sender, EventArgs e)
Winform自定义控件在网页上的应用第22张        
{
Winform自定义控件在网页上的应用第14张            
if (DoStart != null)
Winform自定义控件在网页上的应用第22张            
{
Winform自定义控件在网页上的应用第14张                DoStart(
true);
Winform自定义控件在网页上的应用第29张            }

Winform自定义控件在网页上的应用第29张        }

Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张        
private void button2_Click(object sender, EventArgs e)
Winform自定义控件在网页上的应用第22张        
{
Winform自定义控件在网页上的应用第14张            
if (DoPause != null)
Winform自定义控件在网页上的应用第22张            
{
Winform自定义控件在网页上的应用第14张                DoPause();
Winform自定义控件在网页上的应用第29张            }

Winform自定义控件在网页上的应用第29张        }

Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张        
private void button3_Click(object sender, EventArgs e)
Winform自定义控件在网页上的应用第22张        
{
Winform自定义控件在网页上的应用第14张            
if (DoStart != null)
Winform自定义控件在网页上的应用第22张            
{
Winform自定义控件在网页上的应用第14张                DoStart(
false);
Winform自定义控件在网页上的应用第29张            }

Winform自定义控件在网页上的应用第29张        }

Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第14张        
private void button4_Click(object sender, EventArgs e)
Winform自定义控件在网页上的应用第22张        
{
Winform自定义控件在网页上的应用第14张            
if (DoStop != null)
Winform自定义控件在网页上的应用第22张            
{
Winform自定义控件在网页上的应用第14张                DoStop();
Winform自定义控件在网页上的应用第29张            }

Winform自定义控件在网页上的应用第29张        }

Winform自定义控件在网页上的应用第14张
Winform自定义控件在网页上的应用第84张        
IDoNetEventInScript 成员
Winform自定义控件在网页上的应用第29张    }

Winform自定义控件在网页上的应用第86张}

Winform自定义控件在网页上的应用第1张

超级简单的一个例子,没什么好说的,要注意的是控件类前面的几个属性[ComVisible(true)][Guid("5649B9CC-07BA-432a-A392-532EE2AFD190")]是必须的。
 

二、Visual Studio 2005命令提示注册控件到全局缓存,注意用windowscmd.exe进行注册不行,不认识命令。

注册命令是:regasm /codebase fullpath,其中codebase是必须的,要不然即使注册成功也不会在IE上显示。如图:

Winform自定义控件在网页上的应用第88张
三、将注册好的控件放在网页上

Winform自定义控件在网页上的应用第1张<html>
Winform自定义控件在网页上的应用第1张    
<head>
Winform自定义控件在网页上的应用第1张        
<title>DotNetEventInScript</title>
Winform自定义控件在网页上的应用第1张    
</head>
Winform自定义控件在网页上的应用第1张    
<body>
Winform自定义控件在网页上的应用第1张        
<object id= "eventSource"classid="clsid:5649B9CC-07BA-432a-A392-532EE2AFD190" width=100% height=100% align=alClient>
Winform自定义控件在网页上的应用第1张        
</object>
Winform自定义控件在网页上的应用第13张        
<script type="text/javascript">
Winform自定义控件在网页上的应用第14张            
function eventSource::DoStart(Restart)
Winform自定义控件在网页上的应用第22张            
{
Winform自定义控件在网页上的应用第14张                alert(
"DoStart");
Winform自定义控件在网页上的应用第29张            }

Winform自定义控件在网页上的应用第14张            
function eventSource::DoStop()
Winform自定义控件在网页上的应用第22张            
{
Winform自定义控件在网页上的应用第14张                alert(
"DoStop");
Winform自定义控件在网页上的应用第29张            }

Winform自定义控件在网页上的应用第14张            
function eventSource::DoPause()
Winform自定义控件在网页上的应用第22张            
{
Winform自定义控件在网页上的应用第14张                alert(
"DoPause");
Winform自定义控件在网页上的应用第29张            }

Winform自定义控件在网页上的应用第86张        
</script>
Winform自定义控件在网页上的应用第1张    
</body>
Winform自定义控件在网页上的应用第1张
</html>

测试看看,效果不错吧!

免责声明:文章转载自《Winform自定义控件在网页上的应用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue 手指长按触发事件树莓派 配置 OMV 搭建 NAS(六) 多用户多权限共享文件夹下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WinForm控件之【TextBox】

基本介绍 文本控件,提供多行文本编辑和密码字符掩码功能。 常设置属性 ForeColor:此组件的前景色,用于显示文本; BorderStyle:指示编辑控件是否应带有边框或边框类型; Lines:多行编辑中的文本行,作为字符串值的数组; MaxLength:指定可以在编辑控件中输入的最大字符数; PasswordChar:指示将为单行编辑控件的密码输入显示...

微软:正式发布针对 .NET Core的 Winform 设计器

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://devblogs.microsoft.com/dotnet/windows-forms-designer-for-net-core-released/ 作为微软最引以为傲的IDE编辑器,Visual Studio已经让无数专注于 .NE...

winform窗体 小程序【移动窗体和阴影】

窗体无边框设置后无法移动,引用API 使其获得功能 移动 //窗体移动API [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage(IntPt...

winform中 跨线程启动UI

C#的winform程序中,是不可以从UI窗口主线程之外的线程去直接操作窗口控件的。确切的解释是,不能从创建控件的线程以外的线程去处理控件的操作,比如修改属性等。以下是跨线程操作控件的报错信息:线程间操作无效: 从不是创建控件“textBox4”的线程访问它解决办法解决方案有两个:方法一,设定Control类的CheckForIllegalCrossThr...

C#多功能DataGridView打印类(WinForm)

usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Drawing;usingSystem.Drawing.Printing;usingSystem.Data;usingSystem.Windows.Forms;namespaceWeightSystem{pu...

WinForm控件之【PictureBox】

基本介绍 图片控件,用于显示各种格式图像。 常设置属性 Image:在控件中显示的图像,绑定需要显示的Image类型对象; ErrorImage:当加载图像失败时显示的图像对象; InitialImage:正在加载另一图像时显示的图像对象; SizeMode:控件如何展示图片的类型; Enabled:指示是否启用该控件,true为启用状态用户可编辑,fal...