原文:C/S模式开发中如何利用WebBrowser控件制作导航窗体

转自: CSDN

相信不少同学们都做过MIS系统的开发,今天这里不讨论B/S模式开发的问题.来谈谈winform开发.
用过市面上常见进销存系统的同学肯定知道,在进入系统之后一般在mdi窗体中系统自动打开一个导航子窗体.
将一些常见的功能以非常直观的图形展示给用户.
观察市面上的此类产品,该功能基本是所有mdi窗体开发的管理系统中必备的功能窗体.下面我们就来分析一下如何在.net中实现这个功能.幸好我上次做了一个类似的系统,里面也用到了导航功能.特此奉献自己的开发经验.
哈哈,光看文字是不是很累啊,可能很多同学还不太了解.来个导航窗体效果图片先.
以下这个图是某个用.net开发的进销存系统中的导航截图.


是不是很爽啊?
如何实现呢?现在一般有两种做法:
1.通过gdi或者pictureBox等贴图+复杂编程实现.非常麻烦,速度也慢.
2.通过web方式实现界面.利用代码获取web事件,实现了界面和程序分离.非常方便,而且速度快.
第一种没有必要讲了,现在很少有公司会这么来做了.下面谈谈第二种,也就是本文的主题.
说到在winform中加入网页,我们自然就想到了webBrowser控件.
看看msdn的帮助,里面有一个重要的属性,Document(HtmlDocument类),继续查看msdn,HtmlDocument有一个重要的方法:InvokeScript,来看看msdn解释:执行在 HTML 页面中定义的动态脚本函数。
^_^,看到曙光了吗?这个方法可以很方便的处理webbrowser控件中的网页js代码.
因此我们可以很容易的在C#中调用js函数来控制网页.
但是如何实现网页中代码调用C#的方法呢?大家可以查看msdn ComVisibleAttribute 类:
控制程序集中个别托管类型、成员或所有类型对 COM 的可访问性。

也就是说我们只需要在winform窗体中引入System.Runtime.InteropServices 命名空间.
在窗体类和需要调用的方法前面加上属性声明 [ComVisible(true)]

具体代码如何实现呢?
winform中方法示例为:
[ComVisible(true)]
        public void OpenForm(string formName)
        {
            if (string.IsNullOrEmpty(formName))
                return;
            switch (formName)
            {
                case "PurchaseOrder":
                    Form_PurchaseOrder frm = new Form_PurchaseOrder();
                    frm.Show();
                    break;
                case "SaleOrder":
                    Form_SaleOrder frm1 = new Form_SaleOrder();
                    frm1.Show();
                    break;
                case "Form1":
                    Form1 frm2 = new Form1();
                    frm2.Show();
                    break;
            }
        }
在js可以这样调用该方法:<input type="button" onclick="window.external.OpenForm(PurchaseOrder)" value="采购订单">

C/S模式开发中如何利用WebBrowser控件制作导航窗体的更多相关文章

  1. C#中利用WebBrowser控件,获得HTML源码

    最近获得网页的几个老程序都不能用了. 我原来用 如下代码获得网页html 源码: <pre name="code" class="csharp"> ...

  2. 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择

    在实际的项目开发过程中,有好的控件或者功能模块,我都是想办法尽可能集成到我的WInform开发框架中,这样后面开发项目起来,就可以节省很多研究时间,并能重复使用,非常高效方便.在我很早之前的一篇博客& ...

  3. Winfrom 中完美设置webbrowser控件内核版本

    前言 .NET 版本更新了一代又一代,winform中的webbrowser控件的IE内核版本却始终用的IE7,好多网站都对IE7已经不支持.webbrowser这个控件就显得有些鸡肋,经过查找大佬门 ...

  4. WinForm开发中通用附件管理控件设计开发参考

    1.引言 在WinForm开发中,文件附件的管理几乎在任何一个应用上都会存在,是一个非常通用集中的公共模块.我们日常记录会伴随着有图片.文档等附件形式来展现,如果为每个业务对象都做一个附件管理,或者每 ...

  5. 在开发中使用GMap.Net 控件的心得一

    首先必须先加载GMap.Net这个控件,先通过"添加引用"来加载相应的.dll文件,如果在工具箱中找不到GMapControl这个控件,也别心急. 点击"工具" ...

  6. ASP开发中服务器控件和普通控件的区别

    1.对于服务器按钮控件(即<asp:Button>类型的按钮):服务器响应事件:OnClick客户端响应属性:OnClientClick 2.对于html按钮控件(即<input t ...

  7. 利用WebBrowser控件实现百度自动搜索

    (1)新建一个MFC对话框项目 (2)对话框中添加WebBrower控件,添加方法:点击菜单栏工具->选择工具箱项->在弹出的选择工具箱项对话框选择COM组件->Microsoft  ...

  8. C#利用tabControl控件实现多窗体嵌入及关闭

    创建一个主窗体(Formmain).两个副窗体(Form1,Form2);在主窗体中分别添加一个menuStrip控件.tabControl控件,并在menu控件上添加一个主菜单和两个子菜单   继而 ...

  9. c#中WebBrowser控件的使用方法

    首先先来简单介绍一下webbrowser控件,这个控件是可以实现在form窗体中添加网页内容的.如图,我在form中加入了百度api,(百度地图api调用博客里有讲) 使用这个控件其实很简单 (1)第 ...

随机推荐

  1. oracle的unique约束

    unique约束是唯一性约束,对于需要列类型应用程序会重复出现分歧值.您可以加入一个单独的列unique约束.能够加入多个列unique约束().假设为多个列加入一个unique约束,仅仅须要保证这多 ...

  2. 浅谈web网站架构演变过程(转)

    前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶 ...

  3. Linux之父:除了写内核代码 别的真不会(转)

    Linus Torvalds 是 Linux 之父,被誉为活着的传奇. 其实很多人不了解他也并不奇怪,因为人是在是太低调了.现年 46 岁的他每天的工作仍然是编程,领导并推动着 Linux 的发展. ...

  4. android 视频通话开启呼叫等待后,来第三方的视频通话,接通后通话时间一直显示为0,过几秒之后视频通话自己主动挂断

    开启通话设置视频通话的"来电等待"; 步骤1:測试机和配合机A处于视频通话过程中; 步骤2:配合机B向測试机呼出视频电话; 步骤3:測试机接听配合机B的视频来电; 现象:视频通话过 ...

  5. 【夯实基础】javakeywordsynchronized 详细说明

    尊重版权:http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html Java语言的keyword.当它用来修饰一个方法或者一个代码 ...

  6. jqm的多列布局demo,html5的多列布局demo,多列布局的具体解说,html5开发实例具体解释

    因为移动设备屏幕宽度较小,所以一般不建议使用多列布局.但有时你可能须要并排放置一些元素(如button之类的). jQuery Mobile通过约定的类名ui-grid来提供了一种基于css的多列布局 ...

  7. Team Foundation Server 2015使用教程--默认团队权限说明

  8. php用魔术方法__call实现类函数重载

    因为php是弱类型语言,不喜欢c++通过改变函数返回相同的值键入的参数的数目和功能将过载!但在需求函数的实际发展可能过载.开发需求,我们能够通过魔术方法__call()来实现函数重载. class T ...

  9. CentOS7 安装zookeeper

    本章介绍CentOS的初始配置与zookeeper的安装. www.apache.org/dist/上可以下载Hadoop整个生态环境的组件,我下的Zookeeper3.4.6版本 我一般都是在一个虚 ...

  10. SEO思维的优化源于生活

    [回顾]无论哪个行业的,.学习技巧和操作非常简单,它主要是一个时间的问题?回到seo行业,操作和技能是非常easy学习,和seo入门是互联网行业最easy行业,不像有些人理解的代码,敲代码等,它必须基 ...