C/S模式开发中如何利用WebBrowser控件制作导航窗体
原文: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控件制作导航窗体的更多相关文章
- C#中利用WebBrowser控件,获得HTML源码
最近获得网页的几个老程序都不能用了. 我原来用 如下代码获得网页html 源码: <pre name="code" class="csharp"> ...
- 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择
在实际的项目开发过程中,有好的控件或者功能模块,我都是想办法尽可能集成到我的WInform开发框架中,这样后面开发项目起来,就可以节省很多研究时间,并能重复使用,非常高效方便.在我很早之前的一篇博客& ...
- Winfrom 中完美设置webbrowser控件内核版本
前言 .NET 版本更新了一代又一代,winform中的webbrowser控件的IE内核版本却始终用的IE7,好多网站都对IE7已经不支持.webbrowser这个控件就显得有些鸡肋,经过查找大佬门 ...
- WinForm开发中通用附件管理控件设计开发参考
1.引言 在WinForm开发中,文件附件的管理几乎在任何一个应用上都会存在,是一个非常通用集中的公共模块.我们日常记录会伴随着有图片.文档等附件形式来展现,如果为每个业务对象都做一个附件管理,或者每 ...
- 在开发中使用GMap.Net 控件的心得一
首先必须先加载GMap.Net这个控件,先通过"添加引用"来加载相应的.dll文件,如果在工具箱中找不到GMapControl这个控件,也别心急. 点击"工具" ...
- ASP开发中服务器控件和普通控件的区别
1.对于服务器按钮控件(即<asp:Button>类型的按钮):服务器响应事件:OnClick客户端响应属性:OnClientClick 2.对于html按钮控件(即<input t ...
- 利用WebBrowser控件实现百度自动搜索
(1)新建一个MFC对话框项目 (2)对话框中添加WebBrower控件,添加方法:点击菜单栏工具->选择工具箱项->在弹出的选择工具箱项对话框选择COM组件->Microsoft ...
- C#利用tabControl控件实现多窗体嵌入及关闭
创建一个主窗体(Formmain).两个副窗体(Form1,Form2);在主窗体中分别添加一个menuStrip控件.tabControl控件,并在menu控件上添加一个主菜单和两个子菜单 继而 ...
- c#中WebBrowser控件的使用方法
首先先来简单介绍一下webbrowser控件,这个控件是可以实现在form窗体中添加网页内容的.如图,我在form中加入了百度api,(百度地图api调用博客里有讲) 使用这个控件其实很简单 (1)第 ...
随机推荐
- 玩转Web之servlet(二)---servlet常见错误
1>403:tomcat发生错误 2> 404 :意思是服务器依据请求资源路径,找不到对应的资源 解决:1.依据http://localhost:8080/Web工程名/ur ...
- linux软与硬接线连接
1.Linux链接概念 Linux链接分两种.一种被称为硬链接(Hard Link),还有一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接] 硬连接指通过索 ...
- 【Android小应用】强迫症头像生成器
近期一段时间在微信朋友圈,在头像的右上角添加一个红底白字的数字,让非常多有强迫症的同学点个不停,深深佩服发明这样的头像的姑娘,太机智了.但它不能自己定义,这是硬伤.... 这是朋友圈里的效果图: 这个 ...
- 几点思考-人生哲学,生活方式---ShinePans
美结账时账单住酒店一晚800元.她抱怨太贵.经理说这是标准收费,带泳池的酒店.健身房和wifi. 美女说自己全然没使用,经理说饭店有提供.是她自己不用. 女客人打开皮包掏钱付账.但说要扣除经理和她共度 ...
- uva 10817 - Headmaster's Headache ( 状态压缩dp)
本文出自 http://blog.csdn.net/shuangde800 题目链接: 点击打开链接 题目大意 某校有n个教师和m个求职者,已知每人的工资和能教的课程集合,要求支付最少的工资使得每 ...
- zoj-3795-Grouping-tarjan确定最长的公路收缩
使用tarjan缩合点. 然后,dfs寻找最长的公路. 水体. . . #include<stdio.h> #include<string.h> #include<alg ...
- CloudFoundry.yml修订
--- name: CFRELEASE02 director_uuid: fdd46e30-f2c5-41dc-9662-0976fdac5716 releases: - name: cf versi ...
- Dojo Mobile制定学习用品
Dojo Mobile开展 App技术开发QQ群:347072638 技术咨询.APP定制开发联系邮箱:messageloop@qq.com 时代在演变.技术在革新.无论你接受不接受. 初识Dojo ...
- hdoj 1506&&1505(City Game) dp
// l表示从l[i]到i连续大于a[i]的最远左区间.r表示从i到r[i]连续大于a[i]的最远又区间 DP 找出 a[i] 的最远左区间和最远右区间与自己连着的比自己大的数的长度 , 然后用这个长 ...
- UIMenuController,UIPasteboard:复制,粘贴详细解释
首先,这四个地图.我想实现的功能.[一张照片讲一个复制到另一UIimageView上] 实现代码例如以下: -(IBAction)panGestureTop:(UILongPressGestureRe ...