在IE浏览器中使用Windows窗体控件(一)

** 在 IE ** ** 浏览器中使用 Windows ** ** 窗体控件(一) **

作者 : : Thiru Thangarathinam

翻译:秋枫

** 引言 ** ** **

在过去, Web 程序员经常在他们的 Web 程序中使用 ActiveX 控件来实现一些胖客户端才具有的功能。不过现在开发者可以很容易的通过 Microsoft.NET Framework 来简洁和安全的建立对象,并且方便的在 IE 浏览器中切入使用。通过在 IE 浏览器中创建 Windows 窗体控件,开发者可以实现丰富的 web 客户端。在这篇文章中,我们将会知道怎样创建 Windows 窗体控件并且在 IE 中使用。在浏览器中使用窗体控件过程中,我们会演示怎样通过窗体控件来提供丰富的 web 客户端显示,而窗体控件用来调用远程 Web service 获取数据。与此同时,我们也会知道怎样利用 .NET 安全模型来为我们的窗体控件提供一个安全的运行环境。

如果你有过用 Java 开发 Web 程序的经验,那你会很熟悉 Java applets 。它是一个运行在浏览器中的一个小程序。当浏览器打开包含有 Applet 标签的 HTML 文档时, Java applets 就会运行。 Windows 窗体在 web 页里的工作方式同 Java applets 很相似。在这个实现中,你创建窗体控件,并为他加上丰富的 Windows 窗体控件样式,接着切入到 Web 页面中。在浏览器加载该 Web 页面的时候, Windows 控件所包含的代码也会被执行。在局域网或者扩展的网络程序中这个将会是很有用的。比如想开发一个企业使用的具有胖客户端特性的基与 web 的程序。

.NET 的一个重要特征就是跟 IE 紧密结合。比如,我们可以在 IE 中使用 Windows 窗体控件,而不需要通知用户需要加另外的东西。这个不需要注册什么 .NET CLR 就会提供代码安全访问的能力。

当你创建 Windows 窗体控件,你会有窗体类层次提供的特征。比如,你可以使用 Windows 窗体控件验证技术来验证输入数据的准确性。同样的,你甚至可以在你的窗体控件中调用 Web Service 。通过这些技术使用,你可以创建基与 .NET 平台的丰富的、健壮的、动态应用程序。

_备注:按照原文重写了代码,把载图替换成了中文,运行环境:操作系统 windows2003 , .NET Framework 1.1. 这里讲几点 : 调试过程中打开浏览器输入完整地址。如果以文件方式打开将不会显示窗体控件 ; 另外对于进程的调试,可以是单个源文件。不过我运行的是 Debug 版本下生成的组件,不是 Release 的,有兴趣读者可以试试。 _

** 执行 ** ** **

在这节,我们就会明白怎样创建 Windows 窗体控件并在 IE 中使用。下面列出了五个步骤来完成这一过程。

1 .创建 Windows 窗体控件

2 .创建一个带有 object 标签的 HTML 文档,该标签用来标识 Windows 控件

3 .配置控件的虚拟路径

4 .设置代码访问权限

5 .运行控件

接下来让我们来看看上面的各个步骤。

1 .创建一个 windows 窗体控件

在这一步中,我们创建一个简单的Windows窗体控件。控件实现的功能是显示”Hello World”给用户。我们先来建立一个Windows 控件库项目取名为HelloWorldControl,修改默认的用户控件为HelloWorldCtl。接着在控件中加入一个Label,取名为lblDisplayMessage,同时增加了一个按钮btnClick。当用户点击按钮时,将会执行下面的代码用来显示消息给用户。

private void btnClick_Click(object sender, System.EventArgs e)

{

this.lblDisplayMessage.Text = "Hello World";

}

接着就是编译他生成一个Assembly。

2 .创建 HTML 页

在这一步中,我们将创建一个 HTML 文档并在里面插入 object 标签。整个文档看起来如下:

1<html>
2<body>
3<p>Hello World Control   
4<object classid="http:HelloWorldControl.dll#HelloWorldControl.HelloWorldCtl" height="300" id="HelloWorldControl1" viewastext="" width="300">
5</object>
6<br/>
7</p>
8</body>
9</html>

在这个标签的 classid 属性中,我们指定第一步创建的那个组件的路径以及组件完整限定名。整个完整名称包括命名空间和整个类名。我们可以在上面的代码中清楚的看到组件名和限定名用 # 分割。这两部分参数组合在一起用来标识控件的唯一性。当然可以通过取名唯一 id 为 HelloWorldControl1 来编写客户端脚本。

3 .配置虚拟路径

有了 HTML 页面,现在来建立一个 HelloWorldControlHost 的虚拟目录,实际目录在 D:\My Programs\HellpWorldHost ,该目录包含了 HelloWorldControl.dll 和 Hellpworld.htm 文件。当设置虚拟目录的时候,需要注意的是设置执行权限为“纯脚本”。如果设置成“脚本和可执行脚本”的权限。那控件可能不会正常工作( _我在 IIS6 下设置成“脚本和可执行脚本”,不正常 _ )。你可以打开虚拟目录的属性来确认设置,设置窗口如下:

4 .设置代码访问权限

如果这个 web 在局域网中访问,他会正常工作。如果该 Web 是通过 Internet 来访问,那你需要设置 internet Explorer ,修改安全属性以允许他运行。你可以把主页加入到受信任的站点。如果需要设置可以通过 IE 的工具菜单― >Internet 选项- > 安全- > 受信任的站点,点击上面的站点按钮把你的网站加入其中。接下去,当你打开浏览器查看,就会看到正确执行。

5 .运行控件

要运行这个控件,我们在浏览器中查看包含了控件的那个 Html 页面。假如你在页面上点击这个按钮,那么控件就会显示“ Hellp World ”信息,执行页面如下:

在这个例子中,我们实现了怎样创建件一个 Windows 窗体控件然后在 IE 浏览器中显示。在下一节中我们来实现在客户端浏览器上通过窗体控件来访问 Web Service 。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus