正 文

.NET 用户控件


www.7dspace.com  更新日期:2005-12-3 6:04:43  七度空间


回答

Chuck:

根据 Queensland .NET 用户组织的总裁 Greg Lowe 的说法,Windows 控件在 .NET Framework 中是没有充分发挥功能的一项技术,之后事实证明我不得不接受他的说法。

你的问题中提到的功能在 Windows 控件中通过公有函数(public function)实现起来非常简单——如下面代码所示。

PublicClass UserControl1
    Inherits System.Windows.Forms.UserControl
#Region " Windows Form Designer generated code "
PublicFunction change_color(ByVal color_param AsString)
Me.BackColor = Color.FromArgb(255, Int("&H" + Mid(color_param, 2, 2)), Int("&H" + Mid(color_param, 4, 2)), Int("&H" + Mid(color_param, 6, 2)))
‘assuming input such as #ffffff the line above separates the RGB colors
EndFunction
EndClass

客户端实现也很简单。

    * 在 Visual Studio .NET 2003 中,向已经包含控件项目的解决方案中添加一个 Windows 应用程序项目。
    * 生成解决方案。
    * 然后在 Windows 应用程序中,点击工具箱。注意:现在有一个新选项卡“My User Controls(我的用户控件)”,如果没有生成解决方案这个选项卡将不会出现。
    * 将你的控件拖到 Windows 窗体上。
    * 将下面的代码添加到窗体事件中:

PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
UserControl11.change_color("#ffffff") ‘White background
End

这是使用 Windows Forms 作为客户端的情况。不幸的是,Windows 窗体和 THML页面作为客户端的情况有很大的区别。

在尝试装浏览器作为一个 Windows 控件的宿主之前,我强烈建议你首先在 Windows Form 客户端测试控件,因为Windows 控件没有 Web 设计器支持,而且虽然可以调试,但是运行时反馈相当不直观。

当你在一个 Windows 窗体之中测试了控件之后,就应该尝试在浏览器使用它了。我发现把一个 Windows 控件添加到 Web 页面的最简单的方法是添加一个“空 Web 项目”到已经包含了 Windows控件项目的解决方案之中,然后添加一个“HTML 页面”到这个新的空 Web 项目中。前面我曾经说过,没有 Web 设计器用于添加 Windows 控件,所以必须手工添加 Windows 控件。添加方法是首先打开 HTML 页面,然后查看 HTML 代码。插入代码以及激活 Windows Forms 控件都是通过下面所示的对象标记来完成的:

<bodyMS_POSITIONING="FlowLayout">
<objectid="User_Control"
    classid="http:ZDNET_CTL.dll#ZDNET_CTL.UserControl1"
    height="300"
    width="300"
</object>
</body>

注意:对象标记包含一个 classid,它包含两个部分,控件库的路径以及由圆点分隔的完全合格的控件名称。在我们这里 classid 引用了位于 HTML 页面同一目录下的一个控件。注意:控件必须手工移动到 HTML 页面所在的目录下,否则的话其语法就应该如下所示:

<bodyMS_POSITIONING="FlowLayout">
<objectid="User_Control"
    classid="http://localhost/ask_chuck/ZDNET_CTL/bin/
ZDNET_CTL.dll#ZDNET_CTL.UserControl1"
    height="300"
    width="300"
</object>
</body>

根据浏览器的安全设置,运行 Web 页面要么会显示具有控件的页面,要么会给出一个安全警告,如果接受这个安全警告你同样会看到页面和控件。

该图是下面添加了输入控件之后的完整版本。

现在所要做的是将 body 的颜色传递给控件;这可以通过写在客户端脚本中的一个函数以及一个输入按钮来实现,如下所示:

<script>
function changecolor()
{
  User_Control.change_color(document.bgColor);
}
</script>
<bodyMS_POSITIONING="FlowLayout">
<inputtype="button"value="Match Color with Back Ground"onclick="changecolor()"ID="Button1"NAME="Button1">
      <objectid="User_Control"
    classid="http:ZDNET_CTL.dll
#ZDNET_CTL.UserControl1"
    height="300"
    width="300"
</objectVIEWASTEXT>
</body>

使用这种方法的一个不可思议的地方是可以在浏览器应用程序中做任何可以在完整的 Windows 应用程序中所做的事情。

2页,页码:[1] [2] 

上一篇:.NET 文档
下一篇:Delegate声明的定义使用
作者:Chuck  来源:Builderau.com.au ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐