C# WinForm WebBrowser (一 ) MSDN 资料
1、 主要用途 :使用户可以在窗体中导航网页。
2、 注意 :WebBrowser 控件会占用大量资源。使用完该控件后一定要调用 Dispose 方法,以便确保及时释放所有资源。必须在附加事件的同一线程上调用 Dispose 方法,该线程应始终是消息或用户界面 (UI) 线程。
3、 WebBrowser 使用下面的成员可以将控件导航到特定 URL 、在导航历史记录列表中向后和向前移动,还可以加载当前用户的主页和搜索页:
1. URL属性 :可读、可写,用于获取或设置当前文档的 URL 。
WebBrowser 控件维护浏览会话期间访问的所有网页的历史记录列表。设置 Url 属性时, WebBrowser 控件导航到指定的 URL 并将该 URL 添加到历史记录列表的末尾。
WebBrowser 控件在本地硬盘的缓存中存储最近访问过的站点的网页。每个页面都可以指定一个到期日期,指示页面在缓存中保留的时间。当控件定位到某页时,如果该页具有缓存的版本,则直接显示缓存中的内容而不必重新下载该页,从而节省了时间。使用 Refresh 方法强制 WebBrowser 控件通过下载来重新加载当前页,从而确保控件显示最新版本。
注意 :即使已请求了另一个文档,该属性也包含当前文档的 URL 。如果设置该属性的值,然后立即再次检索该值,要是 WebBrowser 控件尚未来得及加载新文档,则检索到的值可能与设置的值不同。
2. Navigate方法 : 将指定位置的文档加载到 WebBrowser 控件中。
3.GoBack方法: 如果导航历史记录中的上一页可用,则将 WebBrowser 控件导航到该页。
如果导航成功,则返回true ;如果导航历史记录中的上一页不可用,则返回 false 。
WebBrowser 控件维护浏览会话期间访问的所有网页的历史记录列表。可以使用 GoForward 方法实现一个 “ 后退 ” 按钮。
使用 CanGoBack 属性确定导航历史记录是否可用以及是否包含上一页。处理 CanGoBackChanged 事件,在 CanGoBack 属性值更改时接收通知。
4. GoForward方法: 如果导航历史记录中的下一页可用,则将 WebBrowser 控件导航到该页。
如果导航成功,则返回true ;如果导航历史记录中的下一页不可用,则返回 false 。
WebBrowser 控件维护浏览会话期间访问的所有网页的历史记录列表。可以使用 GoForward 方法实现一个 “ 前进 ” 按钮 .
使用 CanGoForward 属性确定导航历史记录是否可用以及是否包含当前页之后的页。处理 CanGoForwardChanged 事件,在 CanGoForward 属性值更改时接收通知
5. GoHome方法 :将 WebBrowser 控件导航到当前用户的主页。
6. GoSearch方法 :将 WebBrowser 控件导航到当前用户的默认搜索页。
默认搜索页存储在注册表的 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Search Page 注册表项下。
若要使用其他搜索页而不是默认搜索页,请调用 Navigate 方法或指定 Url 属性。
7. Refresh方法 :重新加载当前显示在 WebBrowser 控件中的文档。
8. Stop方法 :取消所有挂起的导航并停止所有动态页元素(如背景声音和动画)。
如果导航不成功,则显示一页指示出现的问题。使用这些成员中的任何一个进行导航都会导致在导航的不同阶段发生 Navigating 、 Navigated 和 DocumentCompleted 事件。
4、 ObjectForScripting 属性 :获取或设置一个对象,该对象可由显示在 WebBrowser 控件中的网页所包含的脚本代码访问。
使用该属性启用 WebBrowser 控件承载的网页与包含 WebBrowser 控件的应用程序之间的通信。使用该属性可以将动态 HTML (DHTML) 代码与客户端应用程序代码集成在一起。为该属性指定的对象可作为 window . external 对象(用于主机访问的内置 DOM 对象)用于网页脚本。
可以将此属性设置为希望其公共属性和方法可用于脚本代码的任何 COM 可见的对象。可以通过使用 ComVisibleAttribute 对类进行标记使其成为 COM 可见的类。
若要从客户端应用程序代码调用网页中定义的函数,请使用可从 Document 属性检索的 HtmlDocument 对象的 HtmlDocument . InvokeScript 方法 。
5、 AllowNavigation属性 :获取或设置一个值,该值指示控件在加载其初始页之后是否可以导航到其他页。
6、 AllowWebBrowserDrop属性 :获取或设置一个值,该值指示 WebBrowser 控件是否导航到拖放到它上面的文档。
7、 WebBrowserShortcutsEnabled 属性:是否启用 WebBrowser 自带的快捷键。
8、 ScriptErrorsSuppressed 属性:获取或设置一个值,该值指示出现脚本错误时, WebBrowser 控件是否显示错误对话框。
9、 IsWebBrowserContextMenuEnabled 属性:是否启用右键菜单。
源:MSDN http://msdn.microsoft.com/zh-cn/library/system.windows.forms.webbrowser(v=vs.80).aspx
C#WinForm WebBrowser (二 ) 实用方法总结
实用方法1 :获取状态栏信息
void webBrowser1_StatusTextChanged(object sender, EventArgs e) { label1.Text = webBrowser1.StatusText; }
实用方法2 :页面跳转后改变地址栏地址
//在 Navigated 事件处理函数中改变地址栏地址是最恰当的: private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { textBox1.Text = webBrowser1.Url.ToString(); }
实用方法3 :设置单选框
//建议使用执行单击事件的方式来设置单选框,而不是修改属性: webBrowser1.Document.GetElementById("RBT_A" ).InvokeMember("click" );
实用方法4 :设置联动型下拉列表
//比较常见的联动型多级下拉列表就是省 / 市县选择了,这种情况下直接设置选择项的属性不会触发联动,需要在最后执行触发事件函数才能正常工作: foreach (HtmlElement f in s.GetElementsByTagName("option" )) { if (f.InnerText == "北京 " ) { f.SetAttribute("selected" , "selected" ); } else { f.SetAttribute("selected" , "" ); } } s.RaiseEvent("onchange" );
以上四种方法转于: http://www.cnblogs.com/SkyD/archive/2009/04/23/1441696.html
实用方法一:在WinForm 中相应 Web 事件 假设HTML 源代码如下:
< html > < body > < input type ="button" id ="btnClose" value ="关闭 " /> body > html >
HtmlDocument htmlDoc = webBrowser.Document; HtmlElement btnElement = htmlDoc.All["btnClose" ]; if (btnElement != null ) { btnElement.click += new HtmlElementEventHandler(HtmlBtnClose_Click); }
//很简单吧?那么稍稍高级一点的 —— 我们都知道一个 HTML 元素可能有很多各种各样的事件,而 HtmlElement 这个类只给出最常用、共通的几个。那么,如何响应其他事件呢?这也很简单,只需要调用 HtmlElement 的 AttachEventHandler 就可以了:
btnElement.AttachEventHandler("onclick", new EventHandler(HtmlBtnClose_Click)); //这一句等价于上面的 btnElement.click += new HtmlElementEventHandler(HtmlBtnClose_Click);
对于其他事件,把"onclick" 换成该事件的名字就可以了。例如:
formElement.AttachEventHandler("onsubmit" , new EventHandler(HtmlForm_Submit));
实用方法二:模拟表单自动填写和提交
假设有一个最简单的登录页面,输入用户名密码,点“ 登录 ” 按钮即可登录。已知用户名输入框的 id (或 Name ,下同)是 username ,密码输入框的 id 是 password , “ 登录 ” 按钮的 id 是 submitbutton ,那么我们只需要在 webBrowser 的 DocumentCompleted 事件中使用下面的代码即可:
HtmlElement btnSubmit = webBrowser.Document.All["submitbutton" ]; HtmlElement tbUserid = webBrowser.Document.All["username" ]; HtmlElement tbPasswd = webBrowser.Document.All["password" ]; if (tbUserid == null || tbPasswd == null || btnSubmit == null ) return ; tbUserid.SetAttribute("value" , "smalldust" ); tbPasswd.SetAttribute("value" , "12345678" ); btnSubmit.InvokeMember("click" );
关于表单的提交,的确还有另一种方法就是获取form 元素而不是 button ,并用 form 元素的 submit 方法:
HtmlElement formLogin = webBrowser.Document.Forms["loginForm" ]; //…… formLogin.InvokeMember("submit" );
本文之所以没有推荐这种方法,是因为现在的网页,很多都在submit 按钮上添加 onclick 事件,以对提交的内容做最基本的验证。如果直接使用 form 的 submit 方法,这些验证代码就得不到执行,有可能会引起错误。
实用方法三 :调用脚本
首先是调用Web 页面的脚本中已经定义好的函数。假设 HTML 中有如下 Javascript :
function DoAdd(a, b) { return a + b; }
那么,我们要在WinForm 调用它,只需如下代码即可:
object oSum = webBrowser.Document.InvokeScript("DoAdd" , new object [] { 1 , 2 }); int sum = Convert.ToInt32(oSum);
其次,如果我们想执行一段Web 页面中原本没有的脚本,该怎么做呢?这次 .Net 的类没有提供,看来还要依靠 COM 了。 IHTMLWindow2 可以将任意的字符串作为脚本代码来执行。
string scriptline01 = @"function ShowPageInfo() {" ; string scriptline02 = @" var numLinks = document.links.length; " ; string scriptline03 = @" var numForms = document.forms.length; " ; string scriptline04 = @" var numImages = document.images.length; " ; string scriptline05 = @" var numScripts = document.scripts.length; " ; string scriptline06 = @" alert('网页的统计结果: \r\n 链接数: ' + numLinks + " ; string scriptline07 = @" '\r\n表单数: ' + numForms + " ; string scriptline08 = @" '\r\n图像数: ' + numImages + " ; string scriptline09 = @" '\r\n脚本数: ' + numScripts);}" ; string scriptline10 = @"ShowPageInfo();" ; string strScript = scriptline01 + scriptline02 + scriptline03 + scriptline04 + scriptline05 + scriptline06 + scriptline07 + scriptline08 + scriptline09 + scriptline10; IHTMLWindow2 win = (IHTMLWindow2)webBrowser.Document.Window.DomWindow; win.execScript(strScript, "Javascript" );
以上三种实用方法转于: http://www.cnblogs.com/smalldust/archive/2006/03/08/345561.html
最后: 在脚本中调用WinForm 里的代码 ,这个可能吗? 呵呵,当然是可能的。 下面的代码示例演示如何使用 ObjectForScripting 属性。在该示例中, ObjectForScripting 属性被设置为当前窗体。
view source print ?
using System;
using System.Windows.Forms;
using System.Security.Permissions;
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public class Form1 : Form
{
private WebBrowser webBrowser1 = new WebBrowser();
private Button button1 = new Button();
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
button1.Text = "call script code from client code";
button1.Dock = DockStyle.Top;
button1.Click += new EventHandler(button1_Click);
webBrowser1.Dock = DockStyle.Fill;
Controls.Add(webBrowser1);
Controls.Add(button1);
Load += new EventHandler(Form1_Load);
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.AllowWebBrowserDrop = false;
webBrowser1.IsWebBrowserContextMenuEnabled = false;
webBrowser1.WebBrowserShortcutsEnabled = false;
webBrowser1.ObjectForScripting = this;
// Uncomment the following line when you are finished debugging.
//webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.DocumentText =
"
你可能感兴趣的:(C#)
C#企业级API版本控制实战:构建可扩展的微服务架构
墨夶
C#学习资料 架构 c# 微服务
第一章:企业级API版本控制的生死时速1.1版本控制的三重门//版本控制决策树publicenumVersionControlStrategy{[Description("URI路径版本控制")]UriPath=1,[Description("自定义HTTP头版本控制")]CustomHeader=2,[Description("Accept媒体类型版本控制")]MediaType=3}publi
驯服权限怪兽:C# Winform拖放功能的终极实战指南
驯服权限怪兽的四大秘籍秘籍1:基础拖放功能——“快递员入门培训”1.1环境配置与事件绑定首先,我们需要为窗体或控件开启拖放权限,并绑定事件://Form1.cspublicpartialclassForm1:Form{publicForm1(){InitializeComponent();//关键步骤1:允许窗体接收拖放this.AllowDrop=true;//关键步骤2:绑定事件this.Dr
Unity中的C#编程基础:枚举类型
Skyline_98
Unity c# unity
枚举是一组命名整型常量。枚举类型是使用enum关键字声明的。C#枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。声明enum变量的一般语法:enum{enumerationlist};其中,enum_name指定枚举的类型名称。enumerationlist是一个用逗号分隔的标识符列表。枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值
以下是基于 C# 的面向对象设计,抽象出公共接口和协议实现
zhxup606
通讯协议 c# 开发语言
以下是基于C#的面向对象设计,抽象出公共接口和协议实现,涵盖SerialPortProtocol、TcpProtocol、HttpProtocol、WebSocketProtocol、ModbusProtocol和MQTTProtocol。每个协议实现为单独的项目,公共接口定义在独立项目中,使用异步编程模式(async/await)确保高效和稳定,代码结构易于扩展。以下内容包含详细的代码示例、注释
上位机李工架构之一
zhxup606
架构
本篇将围绕半导体可靠性测试机上位机开发,提供一个系统性教程与学习路线,结合C#高级编程(反射、接口、抽象类、泛型、设计模式、集合、特性、索引、委托事件、匿名方法、多线程、面向对象等)和异步/同步对比,深入讲解如何高效开发上位机系统。同时,基于前文的实时数据可视化(WPF、LiveCharts2、WebSocket)、AI异常检测(ML.NET隔离森林)和异步任务调度(DAG调度、PID控制),本篇
更换SSL证书引发的异常:`sun.security.validator.ValidatorException: PKIX path building failed` `[Nginx跳转失败:501]
猿享天开
技术经验 ssl nginx 网络协议
博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++,C#,Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQLserver,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,
C#开发的人力资源管理系统实现指南
AR新视野
本文还有配套的精品资源,点击获取简介:在信息化时代,人力资源管理系统对企业运营至关重要。本文详解了基于C#语言的人力资源管理系统,解析其核心功能、设计思路及关键技术。系统包括员工信息、考勤、薪酬、招聘培训和绩效评估等模块,展示了如何利用C#和相关技术实现高效稳定的企业级应用。文章还探讨了提升系统性能和安全性的技术手段,如异步编程和权限控制。1.人力资源管理系统核心功能概述人力资源管理系统(HRMS
c# 梳理一 static,静态类,静态构造函数,静态字段
zhang__xiao22
c# c#
c#梳理一Static关键字一、staticstatic关键字用于声明静态成员,包含静态字段,静态方法,静态属性,和静态构造函数。静态成员存在于整个应用程序的生命周期中,而不是特定对象的实例。二、静态字段,静态方法,静态属性,和静态构造函数,静态类1.静态字段,静态方法,静态属性存储位置:静态字段(变量):静态字段存储在数据段(datasegment)中,这是应用程序的内存分区之一。这些字段在程序
System.IO.File.AppendAllText()如何使用
System.IO.File.AppendAllText()是C#中用于向文件末尾追加内容的便捷方法publicstaticvoidAppendAllText(stringpath,stringcontents);publicstaticvoidAppendAllText(stringpath,stringcontents,Encodingencoding);2.核心功能追加内容:将文本写入文件末
C#事件驱动编程:标准事件模式完全指南
钢铁男儿
C# 图解教程 c# 开发语言
事件驱动是GUI编程的核心逻辑。当程序被按钮点击、按键或定时器中断时,如何规范处理事件?.NET框架通过EventHandler委托给出了标准答案。一、EventHandler委托:事件处理的基石publicdelegatevoidEventHandler(objectsender,EventArgse);参数解析:objectsender→事件源对象(任意类型)EventArgse→事件数据容器
在C#中,可以不实例化一个类而直接调用其静态字段
就是有点傻
C# c#
这是因为静态成员(staticmembers)属于类本身,而不是类的实例。这是静态成员的核心特性1.静态成员属于类,而非实例当用static关键字修饰字段、方法或属性时,这些成员会绑定到类级别,而不是实例级别。它们在类加载时(通常是在程序启动或首次访问时)由CLR(公共语言运行时)分配内存并初始化,与是否创建实例无关。2.为什么不需要实例化?内存分配:静态字段的内存空间在程序运行期间只有一份,所有
C# 上位机开发指南:高效学习建议
IT趣编程
学习
C#作为一种编程语言,以其强大的功能、易学易用等特点,在工业自动化领域得到了广泛应用。特别是在上位机软件开发中,C#语言在.NET框架的强大生态系统,能够快速构建出高效、稳定的工业控制系统。本文将介绍C#在上位机开发中的应用并提供一些学习建议,希望通过本指南,能够帮助大家更好的学习上位机开发。前言上位机概念基础知识1、C#语言基础2、.NET框架3、桌面应用开发4、设备通信5、数据操作6、多线程和
【C#之模块化】C#和C++之不同的模块化形式
子夏i
C# C/C++ c# c++
C#和C++之不同的模块化理念一、前言二、C++和C#的模块化方式1.C++2.C#一、前言C++和C#都支持面向对象编程,但C#通过简化模块化组织,移除了C++中诸如头文件和预处理器等被认为是冗余的设计元素。这种简化使得C#在面向对象方面更为直观和易于管理,能够获得更加清晰和一致的代码结构。二、C++和C#的模块化方式1.C++在C++中,模块化结构通常涉及头文件和源文件的分离。头文件包含类的声
C# OPC UA 客户端开发实战:与PLC的数据交互
仰望尾迹云
本文还有配套的精品资源,点击获取简介:本压缩包提供了一个利用C#与OPCUA和KepServerEX实现与PLC数据交互的项目案例。介绍了OPCUA协议的工业通信标准、KepServerEX的使用、C#在工业自动化中的应用、OPCUA客户端API的基本功能,以及相关的DLL文件和工具,旨在简化OPCUA客户端的开发流程,帮助开发者快速创建能够与PLC进行数据交互的C#应用程序。1.OPCUA(OP
C#上位机实战开发指南
ba_wang_mao
时隔半个多月,上位机教程终于写完第三章:Windows窗体程序,现开源给大家学习。有任何错误或者修改意见还请回贴指出,谢谢。【第三章】C#上位机实战开发指南.pdfhttps://www.firebbs.cn/thread-14611-1-1.html
Python-selenium爬取
藏在歌词里
python selenium 开发语言
selenium前言使用python的requests模块还是存在很大的局限性,例如:只发一次请求;针对ajax动态加载的网页则无法获取数据等等问题。特此,本章节将通过selenium模拟浏览器来完成更高级的爬虫抓取任务。什么是seleniumSelenium是一个用于自动化Web应用程序测试的开源工具集。它提供了一组API和工具,可以与多种编程语言一起使用,如Java、Python、C#等,用于
C#与SQL Server交互的数据库技术实践
不教书的塞涅卡
本文还有配套的精品资源,点击获取简介:本课程深入探讨C#与SQLServer数据库的交互技术,包括建立连接、执行SQL语句以及进行CRUD操作。详细介绍使用C#进行数据库操作时的核心概念与高级功能,如参数化查询、存储过程、事务处理、索引、视图和触发器等。旨在教授开发者如何高效、安全地管理和开发SQLServer数据库应用。1.C#与SQLServer的连接建立在现代软件开发中,后端服务经常需要与数
C#安装使用教程
小奇JAVA面试
安装使用教程 c# 开发语言
一、C#简介C#(读作C-Sharp)是微软开发的现代化、面向对象的编程语言,运行在.NET平台之上。它语法简洁、安全,广泛用于桌面应用、Web开发、游戏开发(Unity)以及跨平台开发。二、C#应用场景Windows桌面应用程序(WinForms、WPF)Web应用(ASP.NET)游戏开发(Unity3D)移动开发(Xamarin、MAUI)云服务、API开发控制台程序、自动化工具三、安装开发
ASP.NET Web Pages 教程:从入门到精通
KrDebugging
asp.net 前端 后端 编程学习
ASP.NETWebPages是一种用于构建动态网页的技术,它结合了传统的HTML、CSS和JavaScript,以及强大的服务器端编程语言C#。本教程将带您逐步学习ASP.NETWebPages的基础知识,并通过示例代码演示如何创建交互性强、功能丰富的网页应用程序。环境设置在开始学习ASP.NETWebPages之前,您需要进行以下环境设置:安装VisualStudio:您可以从Microsof
支持向量机(SVM)在肝脏CT/MRI图像分类(肝癌检测)中的应用及实现
猿享天开
医学影像 支持向量机 机器学习 人工智能 算法
博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++,C#,Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQLserver,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,
【C#】MVVM基础知识及基本应用
Mike_Wuzy
c#
以下是一些关于C#中MVVM(Model-View-ViewModel)模式的基础知识:1.模型(Model)模型负责表示数据和业务逻辑,通常包括数据库访问、文件操作等。它不包含任何用户界面相关的代码。publicclassPerson{publicintId{get;set;}publicstringName{get;set;}publicDateTimeBirthDate{get;set;}/
C# Cefsharp 获取cookie 和设置cookie
Little_Code
cookie cefsharp
设置cookievarcook=Cef.GetGlobalCookieManager();cook.SetCookieAsync(url,newCefSharp.Cookie{Domain="",Name="",Value="",});读取cookieprivatevoidBrowser_FrameLoadEnd(objectsender,FrameLoadEndEventArgse){Cooki
dnSpy 使用教程
一、dnSpy简介dnSpy是一款功能强大的免费开源.NET反编译工具,支持对.NETFramework、.NETCore和Mono程序进行反编译、调试与修改,能将程序集反编译为C#或IL(中间语言)代码,帮助开发者或安全研究人员深入分析和理解.NET程序的内部逻辑。它为逆向工程工作提供了极大便利,使相关操作更易于理解和执行。与之类似的ILspy也是一款知名的开源.NET反编译软件,下面将对二者进
Unity反射机制
future1412
unity 游戏引擎
反射知识点回顾编译器是一种翻译程序它用于将源语言程序翻译为目标语言程序源语言程序:某种程序设计语言写成的,比如C#、C、C++、Java等语言写的程序目标语言程序:二进制数表示的伪机器代码写的程序知识点一什么是程序集程序集是经由编译器编译得到的,供进一步编译执行的那个中间产物在WINDOWS系统中,它一般表现为后缀为·dll(库文件)或者是·exe(可执行文件)的格式说人话:程序集就是我们写的一个
R语言的游戏开发
柳婉晴
包罗万象 golang 开发语言 后端
R语言在游戏开发中的应用随着科技的发展,游戏行业已经成为一个巨大的市场。虽然通常我们会认为游戏开发主要是使用C++、C#、JavaScript等语言,但实际上,R语言在游戏开发中也有其独特的应用,尤其是在数据分析和可视化方面。本文将探讨R语言在游戏开发中的应用,涵盖它的基础、游戏设计的复杂性、实际案例分析、以及未来的发展方向。一、R语言基础R语言是一种用于统计计算和数据分析的编程语言。它具有强大的
C#微软工程师跪求:如何用SignalR让后端自动推单?看这个代码魔术!
墨夶
C#学习资料 microsoft flask python
SignalR的“时空折叠”实战指南1.核心原理:SignalR如何“折叠”网络延迟?1.1WebSocket的“量子纠缠”机制//Program.cs-服务端配置varbuilder=WebApplication.CreateBuilder(args);//1.添加SignalR服务builder.Services.AddSignalR(options=>{options.EnableDetai
C# 中 FileInfo 类从入门到精通
caifox菜狐狸
C# 技术使用笔记 c# 开发语言 FileInfo 文件类 文件流 文件操作 File
在C#开发中,文件操作是常见的需求之一,无论是进行文件的读写、复制、移动,还是获取文件信息等,都需要对文件进行有效的管理和操作。FileInfo类是.NET框架中用于表示文件信息的一个强大类,它提供了丰富的属性和方法,使得对文件的操作变得简单而高效。通过本教程,你将深入了解FileInfo类的常用属性和方法,并通过实际案例掌握如何在C#中灵活运用FileInfo类进行文件操作。无论你是初学者还是有
利用C#开发USB摄像头驱动及图像捕获应用详解
威哥说编程
c# 单片机 开发语言
一、项目背景与挑战USB摄像头在工业、安防、视频会议等领域应用广泛。通过C#开发USB摄像头驱动及图像捕获应用,能够灵活地控制设备,实现定制化功能。但由于硬件驱动开发复杂且受限于操作系统,C#开发USB摄像头驱动面临以下挑战:Windows不支持用C#编写内核驱动,需结合WinUSB或现有驱动USB设备通讯协议复杂,多为厂商定制高性能实时图像采集要求较高本文重点讲述:如何基于WinUSB与C#实现
C#实战分享--爬虫的基础原理及实现
关注我,持续分享逻辑思维&管理思维;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》《做好面试准备,迎接2024金三银四》。推荐热榜内容:《架构实战--以海量存储系统讲解热门话题:分布式概念》-------------------------------------正文----
C#.NET员工考勤系统源码解析与探讨
金融先生-Frank
本文还有配套的精品资源,点击获取简介:《C#.NET员工考勤系统源码解析与探讨》是一篇详细介绍C#.NET技术在构建员工考勤管理软件中的应用。文章涵盖了从基础知识点到高级功能实现的全面解析,并分享了源码,以便开发者能深入理解并运用C#.NET技术构建出高效的考勤系统。1.C#.NET基础应用1.1C#语言简介C#(发音为“看井”)是微软公司为了.NET平台创建的一种面向对象、类型安全的编程语言。它
java数字签名三种方式
知了ing
java jdk
以下3钟数字签名都是基于jdk7的
1,RSA
String password="test";
// 1.初始化密钥
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(51
Hibernate学习笔记
caoyong
Hibernate
1>、Hibernate是数据访问层框架,是一个ORM(Object Relation Mapping)框架,作者为:Gavin King
2>、搭建Hibernate的开发环境
a>、添加jar包:
aa>、hibernatte开发包中/lib/required/所
设计模式之装饰器模式Decorator(结构型)
漂泊一剑客
Decorator
1. 概述
若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。
读取磁盘文件txt,并输入String
一炮送你回车库
String
public static void main(String[] args) throws IOException {
String fileContent = readFileContent("d:/aaa.txt");
System.out.println(fileContent);
js三级联动下拉框
3213213333332132
三级联动
//三级联动
省/直辖市<select id="province"></select>
市/省直辖<select id="city"></select>
县/区 <select id="area"></select>
erlang之parse_transform编译选项的应用
616050468
parse_transform 游戏服务器 属性同步 abstract_code
最近使用erlang重构了游戏服务器的所有代码,之前看过C++/lua写的服务器引擎代码,引擎实现了玩家属性自动同步给前端和增量更新玩家数据到数据库的功能,这也是现在很多游戏服务器的优化方向,在引擎层面去解决数据同步和数据持久化,数据发生变化了业务层不需要关心怎么去同步给前端。由于游戏过程中玩家每个业务中玩家数据更改的量其实是很少
JAVA JSON的解析
darkranger
java
// {
// “Total”:“条数”,
// Code: 1,
//
// “PaymentItems”:[
// {
// “PaymentItemID”:”支款单ID”,
// “PaymentCode”:”支款单编号”,
// “PaymentTime”:”支款日期”,
// ”ContractNo”:”合同号”,
//
POJ-1273-Drainage Ditches
aijuans
ACM_POJ
POJ-1273-Drainage Ditches
http://poj.org/problem?id=1273
基本的最大流,按LRJ的白书写的
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
#define INF 0x7fffffff
int ma
工作流Activiti5表的命名及含义
atongyeye
工作流 Activiti
activiti5 - http://activiti.org/designer/update在线插件安装
activiti5一共23张表
Activiti的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
A
android的广播机制和广播的简单使用
百合不是茶
android 广播机制 广播的注册
Android广播机制简介 在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。这个广播跟我们传统意义中的电台广播有些相似之处。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理。另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应
Spring事务传播行为详解
bijian1013
java spring 事务传播行为
在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这
eidtplus operate
征客丶
eidtplus
开启列模式: Alt+C 鼠标选择 OR Alt+鼠标左键拖动
列模式替换或复制内容(多行):
右键-->格式-->填充所选内容-->选择相应操作
OR
Ctrl+Shift+V(复制多行数据,必须行数一致)
-------------------------------------------------------
【Kafka一】Kafka入门
bit1129
kafka
这篇文章来自Spark集成Kafka(http://bit1129.iteye.com/blog/2174765),这里把它单独取出来,作为Kafka的入门吧
下载Kafka
http://mirror.bit.edu.cn/apache/kafka/0.8.1.1/kafka_2.10-0.8.1.1.tgz
2.10表示Scala的版本,而0.8.1.1表示Kafka
Spring 事务实现机制
BlueSkator
spring 代理 事务
Spring是以代理的方式实现对事务的管理。我们在Action中所使用的Service对象,其实是代理对象的实例,并不是我们所写的Service对象实例。既然是两个不同的对象,那为什么我们在Action中可以象使用Service对象一样的使用代理对象呢?为了说明问题,假设有个Service类叫AService,它的Spring事务代理类为AProxyService,AService实现了一个接口
bootstrap源码学习与示例:bootstrap-dropdown(转帖)
BreakingBad
bootstrap dropdown
bootstrap-dropdown组件是个烂东西,我读后的整体感觉。
一个下拉开菜单的设计:
<ul class="nav pull-right">
<li id="fat-menu" class="dropdown">
读《研磨设计模式》-代码笔记-中介者模式-Mediator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。
* 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
*
* 在我看来,Mediator模式是把多个对象(
常用代码记录
chenjunt3
UI Excel J#
1、单据设置某行或某字段不能修改
//i是行号,"cash"是字段名称
getBillCardPanelWrapper().getBillCardPanel().getBillModel().setCellEditable(i, "cash", false);
//取得单据表体所有项用以上语句做循环就能设置整行了
getBillC
搜索引擎与工作流引擎
comsci
算法 工作 搜索引擎 网络应用
最近在公司做和搜索有关的工作,(只是简单的应用开源工具集成到自己的产品中)工作流系统的进一步设计暂时放在一边了,偶然看到谷歌的研究员吴军写的数学之美系列中的搜索引擎与图论这篇文章中的介绍,我发现这样一个关系(仅仅是猜想)
-----搜索引擎和流程引擎的基础--都是图论,至少像在我在JWFD中引擎算法中用到的是自定义的广度优先
oracle Health Monitor
daizj
oracle Health Monitor
About Health Monitor
Beginning with Release 11g, Oracle Database includes a framework called Health Monitor for running diagnostic checks on the database.
About Health Monitor Checks
Health M
JSON字符串转换为对象
dieslrae
java json
作为前言,首先是要吐槽一下公司的脑残编译部署方式,web和core分开部署本来没什么问题,但是这丫居然不把json的包作为基础包而作为web的包,导致了core端不能使用,而且我们的core是可以当web来用的(不要在意这些细节),所以在core中处理json串就是个问题.没办法,跟编译那帮人也扯不清楚,只有自己写json的解析了.
C语言学习八结构体,综合应用,学生管理系统
dcj3sjt126com
C语言
实现功能的代码:
# include <stdio.h>
# include <malloc.h>
struct Student
{
int age;
float score;
char name[100];
};
int main(void)
{
int len;
struct Student * pArr;
int i,
vagrant学习笔记
dcj3sjt126com
vagrant
想了解多主机是如何定义和使用的, 所以又学习了一遍vagrant
1. vagrant virtualbox 下载安装
https://www.vagrantup.com/downloads.html
https://www.virtualbox.org/wiki/Downloads
查看安装在命令行输入vagrant
2.
14.性能优化-优化-软件配置优化
frank1234
软件配置 性能优化
1.Tomcat线程池
修改tomcat的server.xml文件:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="1200" m
一个不错的shell 脚本教程 入门级
HarborChung
linux shell
一个不错的shell 脚本教程 入门级
建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。 如同其他语言一样
Spring4新特性——核心容器的其他改进
jinnianshilongnian
spring 动态代理 spring4 依赖注入
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
Linux设置tomcat开机启动
liuxingguome
tomcat linux 开机自启动
执行命令sudo gedit /etc/init.d/tomcat6
然后把以下英文部分复制过去。(注意第一句#!/bin/sh如果不写,就不是一个shell文件。然后将对应的jdk和tomcat换成你自己的目录就行了。
#!/bin/bash
#
# /etc/rc.d/init.d/tomcat
# init script for tomcat precesses
第13章 Ajax进阶(下)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Troubleshooting Crystal Reports off BW
blueoxygen
BO
http://wiki.sdn.sap.com/wiki/display/BOBJ/Troubleshooting+Crystal+Reports+off+BW#TroubleshootingCrystalReportsoffBW-TracingBOE
Quite useful, especially this part:
SAP BW connectivity
For t
Java开发熟手该当心的11个错误
tomcat_oracle
java jvm 多线程 单元测试
#1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收
测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为
正则表达式大全
yang852220741
html 编程 正则表达式
今天向大家分享正则表达式大全,它可以大提高你的工作效率
正则表达式也可以被当作是一门语言,当你学习一门新的编程语言的时候,他们是一个小的子语言。初看时觉得它没有任何的意义,但是很多时候,你不得不阅读一些教程,或文章来理解这些简单的描述模式。
一、校验数字的表达式
数字:^[0-9]*$
n位的数字:^\d{n}$
至少n位的数字:^\d{n,}$
m-n位的数字:^\d{m,n}$