首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#窗体界面

WebForm中调用WinForm界面的方法简介

减小字体 增大字体 作者:佚名  来源:转载整理  发布时间:2012-06-28 06:08:03

CS架构的winForm与BS架构的webForm是不能直接通信的,那么真的就一点儿办法都没了吗?其实不然。

看了网上很多资料,我总结出有两种方式可以实现。

1)首先客户端需要用注册表写入协议,通过协议去找已经安装在客户端的winForm的exe文件,这时可以给窗体传入参数,例如 “helloworld://你个猪头”, helloworld是协议,后面”你个猪头“是传入的字符串。当然winForm的main方法写法也有不同,需要得到参数(也可以不要参数,如果不需传参,直接调用)

       /// <summary>
       
/// 应用程序的主入口点。
       
/// </summary>

        [STAThread]

       
static void Main(string[] args)
        {
           
//Application.EnableVisualStyles();
           
//Application.SetCompatibleTextRenderingDefault(false);
           
//Application.Run(new Form1());
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(
false);
            Form1 frm
= new Form1();
           
if (args.Length > 0)
            {
                frm.strArgs
= args[0];
                MessageBox.Show(args[
0]);
                Application.Run(frm);
            }
           
else
            {
                Application.Run(
new Form1());
            }
        }

注册表中指向调用winForm所在的exe文件路径即可,具体代码详见测试案例;当然调用也很简单 如

<a href="helloworld://你个猪头"><img border="0" SRC='hello.jpg' alt="测试"></a>

后面附上测试案例。

2)第二种就是调用active插件,也叫ocx插件,需要客户端注册一个插件,我们可以新建一个”windows窗体控件库“来实现,具体方法我也不多讲,可以参考:http://hi.baidu.com/dosonet/blog/item/7ced5d929411a2ada877a446.html

简单说说我当时遇到的困难和特别需要注意的:

a. 在一个”windows窗体控件库“项目中,可以新建多个用户控件窗体,但是如果要网页上正常调用,必须实现IObjectSafety接口,具体实现可以完全ctrl + c, ctrl + v,并且需要指定完全不同的guid值,否则不能正常调用。

b. 不同用户控件窗体是不能相互调用的,如果要调用不同窗体,直接新建Form就行,然后可以采取用户控件中弹出Form来实现。详见我的测试案例。

总结下,其实winForm中实现active插件也不是很难,只是winForm必须基于.NET framework来工作,所以我建议winForm的版本在2.0,不要升级到3.0及其以上,因为安装在客户上,2.0只需20M左右,3.0则要几百M,如果不是必须用C#来实现的话,用C,C++,或者delphi更好……

本文的测试案例下载:http://www.biye5u.com/soft/source/dotnet/00004141.html

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.