3

如何在ASP.NET页面中嵌入WINFORM控件二

by 刘武 23. 九月 2009 20:46

上一篇介绍了在ASP.NET页面中嵌入WINFORM控件的基本方法,本篇会举个稍微复杂的例子来说明如何在页面中调用WINFORM控件的属性和方法。

一 新建项目 Liuw.Net.WindowsControlLibrary,并添加WINDOWS用户控件 MyControl1

二 给控件 MyControl1 添加属性和方法:

namespace Liuw.Net.WindowsControlLibrary
{
    public partial class MyControl1 : UserControl
    {
        public MyControl1()
        {
            InitializeComponent();
        }

        private string _userName = "";
        public string UserName
        {
            set { _userName = value; }
            get { return _userName; }
        }

        public void SayHello()
        {
            MessageBox.Show("Welcome To Liuwu.net," + _userName);
        }
    }
}

该控件包含一个UserName属性及SayHello方法,当调用方法的时候,则弹出对话框。

三 编译项目,并拷贝dll文件到网站目录

四 添加页面SayHello.aspx


<script type="text/javascript">
function SayHello()
{
    var obj = document.getElementById("ctl");
    var input = document.getElementById("inputName");
    obj.UserName = input.value;
    obj.SayHello();      
}
</script>
Name:<input type="text" id="inputName" />
<input type="button" value="SayHello" onclick="SayHello()" />
<object id="ctl" 
 classid="Liuw.Net.WindowsControlLibrary.dll#
 Liuw.Net.WindowsControlLibrary.MyControl1"
></object>

不难看出,用JS脚本就可以完成属性和方法的调用,不过此时运行页面,可能会出现脚本错误,提示 “对象不支持该属性或方法”。那是因为我们在编译用户控件时少了一个步骤:

五 右击项目Liuw.Net.WindowsControlLibrary,并选择属性,选择“应用程序”选项卡,点击"程序集信息",勾中“使程序集COM可见”,

重新编译,并替换网站目录下的文件:

现在我们就可以正常访问了,但是还有个限制,只有本地网络或将访问的网站添加到信任站点才可以。是不是很麻烦,的确,他就是这麽麻烦,甚至笔者在VS2005环境下直接浏览也会提示脚本错误,必须建立虚拟目录,或者发布后才能使用。还有个方法就是配置.NET的程序集权限,这个会在以后的章节单独讨论。

前篇:

如何在ASP.NET页面中嵌入WINFORM控件一

后篇:

如何在ASP.NET页面中嵌入WINFORM控件三  

Tags: ,

技术生涯

评论

shuiyouhan85
shuiyouhan85
2010-6-3 20:41:47 回复

你好,你说的windows用户控件是指windows窗体控件库吗?我按你说的调试怎么老是出问题

昊天
昊天
2010-9-4 11:22:48 回复

看了您写的关于 .net framework 安全性策略的调整问题,和通过web 页面调用windows控件的方法,按照您的方法设定了,但是总是报 如下错误:

网页错误详细信息

消息: 对象不支持此属性或方法
行: 15
字符: 13
代码: 0
URI: http://localhost:1689/WebSiteTest/Default.aspx

使程序集COM可见 已经勾选
我使用的是VS2005 .net framework 2.0

请教如果解决?


另外请教您指点如何通过程序设置 “运行库安全策略”=》“调整区域安全性” 对安全性进行调整!

liuwu
liuwu
2010-9-6 9:38:30 回复

你使用的http://localhost:1689/,是不是在VS 2005裡直接運行的? 那種情況有時候確實會有問題,我也碰到過,你可以試試放到IIS裡運行。

添加评论


(将显示你的Gravatar图标)

biuquote
  • 评论
  • 在线预览
Loading



Powered by BlogEngine.NET 1.6.1.9  登录
Original Design by Laptop Geek, Adapted by onesoft