调试Windows窗体控件

要调试窗体控件,你需要按照下面步骤进行。

1.打开浏览器并请求包含窗体控件的那个Html页面。

2.打开visual Studio.Net同时选择工具->调试进程就会显示下面的对话框。

在这个进程对话框中,选择IEXPLORE.EXE 点击附加按钮。当你点击附加按钮时会跳出一个对话框提示你选择要调试的程序类型。我们选择了Common Language Runtime 和Script两项,如下图:

确定关闭上面的窗口和进程窗口。

通过Vs.net的文件菜单打开用户控件文件 AuthorsWebServiceClient.cs,在源代码中设置断点。这样一旦你设置断点,你就可以调试该控件了,如下图所示。

Windows窗体代码访问权限

就象我们以前讨论的一样。当窗体控件在IE中执行时,他使用由.NET运行时提供的权限。要弄清楚控件怎样使用由.NET运行时提供的代码访问安全来在IE中运行,让我们回到前面,在窗体控件Load事件中加入下面的代码:

private void AuthorsControl_Load(object sender, System.EventArgs e)

{

if (!EventLog.SourceExists("TestSource"))

EventLog.CreateEventSource("TestSource", "TestLog");

else

{

EventLog.DeleteEventSource("TestSource");

EventLog.CreateEventSource("TestSource", "TestLog");

}

}

在上面的代码中我们判断web服务器上是否存在”TestLog”的日志源,如果不存在我们就创建他,如果存在就删除重建。就象你预料的一样,执行这些代码需要有更多的权限,所以上面的代码通过Internet该用户控件将不会正常工作,你将会看到如下的提示窗口。

通过上面窗口我们可以清楚的看到你的访问被.NET运行时所限制。

在IE中使用窗体控件时,你需要意识到他的优点和局限。主要的优点包括:

1.通过Web实现丰富的动态界面。

2.无缝结合.NET的代码安全策略。

3.优于Java applets的表现。

限制包括:

1.客户端需要是Windows操作系统

2.需要IE6.0的支持

3.客户端需要安装.NET运行时环境

4.服务器端需要是Window2000和IIS5.0或者更高版本

由于上面的限制,对客户端和服务器端数据的传输这也许也是有利的。比如说由于让Windows窗体控件在客户端IE中使用需要客户端安装有.NET runtime,我们可以写一些代码来判断客户机是否安装有.NET runtime,通过这一特征我们可以获得版本号,否则会得到0.0。

结论

在这篇文章中,我们讨论了怎样在IE中使用浏览窗体控件以及在进程中进行调试。同时也讲到了在IE中的.NET代码访问安全控制。

虽然这项技术的实现需要客户端安装.NET运行时,不过我们可以相信在以后的Windows操作系统中将会集成.NET framework,windows2003就是一个很好的例子。

最后,我希望你会发现这篇文章对你有所帮助,同时谢谢你的阅读。

 

在这个进程对话框中,选择IEXPLORE.EXE 点击附加按钮。当你点击附加按钮时会跳出一个对话框提示你选择要调试的程序类型。我们选择了Common Language Runtime 和Script两项,如下图:

确定关闭上面的窗口和进程窗口。

通过Vs.net的文件菜单打开用户控件文件 AuthorsWebServiceClient.cs,在源代码中设置断点。这样一旦你设置断点,你就可以调试该控件了,如下图所示。

Windows窗体代码访问权限

就象我们以前讨论的一样。当窗体控件在IE中执行时,他使用由.NET运行时提供的权限。要弄清楚控件怎样使用由.NET运行时提供的代码访问安全来在IE中运行,让我们回到前面,在窗体控件Load事件中加入下面的代码:

private void AuthorsControl_Load(object sender, System.EventArgs e)

{

if (!EventLog.SourceExists("TestSource"))

EventLog.CreateEventSource("TestSource", "TestLog");

else

{

EventLog.DeleteEventSource("TestSource");

EventLog.CreateEventSource("TestSource", "TestLog");

}

}

在上面的代码中我们判断web服务器上是否存在”TestLog”的日志源,如果不存在我们就创建他,如果存在就删除重建。就象你预料的一样,执行这些代码需要有更多的权限,所以上面的代码通过Internet该用户控件将不会正常工作,你将会看到如下的提示窗口。

通过上面窗口我们可以清楚的看到你的访问被.NET运行时所限制。

在IE中使用窗体控件时,你需要意识到他的优点和局限。主要的优点包括:

1.通过Web实现丰富的动态界面。

2.无缝结合.NET的代码安全策略。

3.优于Java applets的表现。

限制包括:

1.客户端需要是Windows操作系统

2.需要IE6.0的支持

3.客户端需要安装.NET运行时环境

4.服务器端需要是Window2000和IIS5.0或者更高版本

由于上面的限制,对客户端和服务器端数据的传输这也许也是有利的。比如说由于让Windows窗体控件在客户端IE中使用需要客户端安装有.NET runtime,我们可以写一些代码来判断客户机是否安装有.NET runtime,通过这一特征我们可以获得版本号,否则会得到0.0。

结论

在这篇文章中,我们讨论了怎样在IE中使用浏览窗体控件以及在进程中进行调试。同时也讲到了在IE中的.NET代码访问安全控制。

虽然这项技术的实现需要客户端安装.NET运行时,不过我们可以相信在以后的Windows操作系统中将会集成.NET framework,windows2003就是一个很好的例子。

最后,我希望你会发现这篇文章对你有所帮助,同时谢谢你的阅读。

 

在IE浏览器中使用Windows窗体控件(三)相关推荐

  1. C#实现渐变颜色的Windows窗体控件

    C#实现渐变颜色的Windows窗体控件! 1,定义一个BaseFormGradient,继承于System.Windows.Forms.Form 2,定义三个变量: private Color _C ...

  2. Winform下ToolStrip承载自定义控件或 Windows 窗体控件。

     如题,使用ToolStripControlHost. 先看MSDN上介绍的: ToolStripControlHost  是 ToolStripComboBox.ToolStripTextBox ...

  3. 如何在多线程中调用winform窗体控件2——实例篇

    如何在多线程中调用winform窗体控件2--实例篇 针对之前文章<如何在多线程中调用winform窗体控件>,下面举个我项目中的实际案例,这是一个我自定义控件在异步设置焦点时的代码.在新 ...

  4. IE11浏览器中的My97日历控件刷新后无法打开问题解决办法

    IE11浏览器中的My97日历控件刷新后无法打开问题解决办法:(谷歌浏览器下正常.IE11失效) 解决办法: 1:找到WdatePicker.js 2:将$crossFrame:true 改为$cro ...

  5. c#中如何跨线程调用windows窗体控件?

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial ...

  6. c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。...

    首先来看传统方法: public partial class Form1 : Form{public Form1() { InitializeComponent(); } private void F ...

  7. LEADTOOLS V20,医学影像浏览器中3D体积渲染控件

    2018 年 9 月 ,LEAD Technologies 发布了 LEADTOOLS V20 破解版本的更新,对整个产品线进行了许多速度和精度的优化. 除了更高效的 OCR,文件格式编解码器和图像显 ...

  8. c# vs2005 多线程中调用窗体控件 (摘)

    Vs 2003用多了,装了VS 2005就有点用不习惯了,以前在2003里面不会因为在线程里面对其它线程中的控件进行操作而报错,到了2005这个就变成一个异常了,不过这也是为了线程之间的安全性,所以只 ...

  9. 使用 .NET 框架轻松开发完美的 Web 窗体控件

    作者:David S. Platt   出自:微软 本文假定您熟悉 Visual Basic .NET.C# 和 HTML 下载本文的代码: WebC.exe (274KB) 摘要 预建的自定义控件可 ...

最新文章

  1. 位运算详解+竞赛常见用法总结
  2. python urllib.request 爬虫 数据处理-使用Python3.5写简单网络爬虫
  3. ActiveX控件制作与发布,如何将您的C++程序嵌入到浏览器中
  4. lightoj-1028 Trailing Zeroes (I)
  5. (20):数据的准备工作
  6. Android JNI_OnLoad()函数
  7. WildFly管理控制台已更新–请求反馈
  8. eureka 集群失败的原因_eureka集群中的疑问?
  9. cs106a编程方法学作业解答(3)
  10. leetcode809. 情感丰富的文字
  11. 强大的漏洞扫描工具--nessus
  12. 软件自动化测试成功之道_是什么使测试自动化成功?
  13. 007---多态与多态性
  14. Python机器学习笔记 GridSearchCV
  15. JWT的数字签名的简单理解
  16. 怎样清理软件卸载残留文件和系统垃圾
  17. Comparator.comparing排序使用示例
  18. PNAS:人类大脑性别间差异研究—基于结构、功能及转录组多模态分析
  19. 看《墨攻》理解IoC
  20. flutter和Android混编下出现“No implementation found for method xxxx on channel”错误

热门文章

  1. Java数据结构及工具类
  2. 【PaperNotes】Embedding-based Retrieval in Facebook Search
  3. 浅谈:事件冒泡、事件捕获,及阻止办法
  4. led透明屏“隐形”功能怎么做到的
  5. 【数据结构】哈希表详解以及代码实现
  6. vue3封装时间计算-日期倒计时组件——还有XX天 第XX天
  7. 学习matlab(八)——绘图(二维)
  8. 如何执行一条汇编指令
  9. 自然语言处理 典型场景分析
  10. 掌握这些Python技能,向大厂迈进一步!