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#)
探索企业级智能对话:ChatGPT + 企业数据 (C) 开源项目推荐
芮川琨Jack
探索企业级智能对话:ChatGPT+企业数据(C#)开源项目推荐azure-search-openai-demo-csharpAsampleappfortheRetrieval-AugmentedGenerationpatternrunninginAzure,usingAzureCognitiveSearchforretrievalandAzureOpenAIlargelanguagemodels
Haxe:OpenFL框架与Haxe游戏开发_2024-07-15_07-13-55.Tex
chenjj4003
游戏开发2 网络 游戏引擎 c++ 开发语言 深度学习
Haxe:OpenFL框架与Haxe游戏开发Haxe简介Haxe语言概述Haxe是一种开源的、多范式编程语言,它被设计为一种高级语言,用于编写跨平台的应用程序。Haxe的独特之处在于它的编译器,能够将Haxe代码编译成多种目标语言,包括JavaScript、C++、Java、PHP、Python、C#和ActionScript。这种能力使得开发者能够使用相同的代码库为不同的平台生成代码,极大地提高
10步教你搞定C#服务化日志实时分析与监控,比想象中简单?对比传统方法,效率提升50%!
墨瑾轩
C#乐园 c# 开发语言
关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣在软件的世界里,日志就像是一本日记,记录着程序的喜怒哀乐。但是,这本日记往往写得密密麻麻,让人看得眼花缭乱。如何从中抽丝剥茧,快速找到我们需要的信息呢?特别是在C#的服务应用中,当你的系统像一个忙碌的小蜜蜂一样不停歇地工作时,你是否曾想过,“要是能有个魔法棒,
C# 零基础入门篇(2. `while` 和 `for` 循环的详细对比)
think__deeply
c# visualstudio 开发语言
在C#编程中,`while`和`for`是两种常用的循环结构。它们都可以用于重复执行一段代码,但在使用场景、语法结构以及控制方式上有所不同。本文将详细对比这两种循环结构,帮助你更好地理解它们的区别和使用场景。#####`while`循环`while`循环是一种条件循环,只要指定的条件为`true`,循环就会一直执行。它通常用于不确定循环次数的情况。###`for`循环`for`循环是一种计数循环,
C#中提供的多种集合类以及适用场景
Zhen (Evan) Wang
C# c# 开发语言
在C#中,有多种集合类可供使用,它们分别适用于不同的场景,部分代码示例提供了LeetCode相关的代码应用。1.数组(Array)特点固定大小:在创建数组时需要指定其长度,之后无法动态改变。连续存储:数组元素在内存中是连续存储的,因此可以通过索引快速访问元素,访问时间复杂度为O(1)。类型固定:数组中的所有元素必须是相同类型。示例代码int[]numbers=newint[5]{1,5,2,3,4
华山论剑:C#对Java
dbvbuv3014
c# java 内存管理
C#(C-Sharp)是Microsoft的新编程语言,被誉为“C/C++家族中第一种面向组件的语言”。然而,不管它自己宣称的是什么,许多人认为C#更像是Java的一种克隆,或者是Microsoft用来替代Java的产品。事实是否是这样的呢?本文的比较结果表明,C#不止是Java的同胞那么简单。如果你是一个Java开发者,想要学习C#或者了解更多有关C#的知识,那么本文就是你必须把最初10分钟投入
【C#语言】Unity引擎
计算机学长
C# c# 开发语言
引言在当今的游戏开发领域,C#语言与Unity引擎犹如一对黄金搭档,携手塑造了无数令人瞩目的游戏作品。C#作为一种简洁、类型安全且面向对象的编程语言,以其强大的功能和易于学习的特性,深受开发者喜爱。而Unity引擎,凭借其跨平台性、丰富的资源和强大的图形渲染能力,成为了游戏开发的首选平台之一。无论是小型独立游戏的灵动创意,还是大型3A游戏的震撼呈现,都能看到C#语言与Unity引擎的身影。它们的结
C#语言的主要特性和用途。
huacheng168
c#
你描述的非常准确。以下是C#语言的一些主要特点和特性:基于.NET平台:C#是一种基于.NET平台的开发语言,它能够利用.NET框架提供的大量类库和功能,这使得C#在开发各种类型的应用时具有很高的效率。多平台支持:C#语言本身可以在多个平台上运行,包括Windows、Linux和MacOS等操作系统。这使得C#具有很好的跨平台兼容性。简洁易学的语法:C#的语法设计得非常清晰和易学,它借鉴了多种语言
C#OPC(下)
C6666888
C#专栏 c# 开发语言
安装OPCUASDK通过NuGet包管理器,在VisualStudio中右键单击项目名称,选择“管理NuGet程序包”,在搜索框中输入“OPCFoundation.NetStandard.Opc.Ua”,找到对应的OPCUASDK包后点击“安装”,将其集成到C#项目中。它和OPC安装流程一样。配置OPCUA客户端应用程序创建一个ApplicationConfiguration对象,用于配置OPCU
c#中的PelcoD云台控制
我在北京coding
c# 开发语言
在IT行业中,云台控制是视频监控系统中的一个重要组成部分,特别是在使用远程监控摄像头时。PelcoD协议是一种广泛用于控制云台和摄像机运动的工业标准,尤其在安防监控领域。本文将深入探讨如何使用C#语言实现PelcoD协议进行云台控制。一、PelcoD协议介绍PelcoD协议是一种串行通信协议,主要用于控制云台的上、下、左、右移动,缩放、聚焦、光圈调整等功能。该协议基于RS-485或RS-232通信
unity引擎中的渲染实现细节
你一身傲骨怎能输
商业化游戏开发技术专栏 unity 游戏引擎
在Unity引擎中,渲染实现细节涉及多个层面,包括但不限于材质处理、光照计算、阴影渲染、后处理效果等。下面我将提供一个简化的示例,模拟Unity中的一个基本的渲染流程,特别是在处理光照和材质方面的代码实现。这个示例将使用C#语言,因为Unity主要使用C#进行开发。示例:基础光照和材质渲染在Unity中,渲染通常是通过Shader和C#脚本来控制的。以下是一个简化的Shader和C#脚本,用于实现
实现简单的离线人脸识别:C# 结合 OpenCvSharp 和 Emgu CV
墨夶
C#学习资料2 c# 开发语言
嘿,小伙伴们!今天我们要一起动手实现一个简单的离线人脸识别系统。想象一下,你的应用程序能够识别用户面部并进行身份验证,是不是超酷的?别急,让我们借助OpenCvSharp和EmguCV这两个强大的计算机视觉库,一步一步实现这一目标!引言在现代应用中,人脸识别技术越来越普及,从智能手机解锁到门禁系统,再到安全监控。然而,许多应用场景需要离线处理以保护隐私和减少延迟。今天,我们将使用C#结合OpenC
python爬取b站弹幕分析_B站直播弹幕获取 - 用python写一个B站弹幕姬吧
weixin_39652869
python爬取b站弹幕分析
前言关于这个小项目的由来。最开始是想要利用b站的弹幕进行一些互动之类的。原本也有想过可以利用现有的弹幕姬做个插件来解决的,但无奈不会C#,所以只能自己研究b站的弹幕协议。后来有写过一个C++版本的,不过有一些小问题,这在后文中会提到。开码一丶利用POST方式获取B站直播弹幕参考:【python】b站直播弹幕获取首先,随便打开一个b站的直播页面,按F12打开控制台,点进“网络(Network)”标签
23种设计模式之《外观模式(Facade)》在c#中的应用及理解
yuanpan
外观模式 设计模式 c# 开发语言
程序设计中的主要设计模式通常分为三大类,共23种:1.创建型模式(CreationalPatterns)单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。工厂方法模式(FactoryMethod):定义创建对象的接口,由子类决定实例化哪个类。抽象工厂模式(AbstractFactory):提供一个创建一系列相关或依赖对象的接口,而无需指定具体类。建造者模式(Builder)
ASP.NET Core Clean Architecture CQRS Event Sourcing 教程
霍潇青
ASP.NETCoreCleanArchitectureCQRSEventSourcing教程ASP.NET-Core-Clean-Architecture-CQRS-Event-SourcingASP.NETCore,C#,CQRSEventSourcing,RESTAPI,DDD,SOLIDPrinciplesandCleanArchitecture项目地址:https://gitcode.c
C#初级教程(4)——流程控制:从基础到实践
软件黑马王子
C# c# 开发语言
1.为什么需要流程控制有时候,需要根据程序运行时的具体环境,有选择地执行不同代码段;而有时候,则需要反复执行同一段代码。这时候,流程控制中的分支和循环就发挥了关键作用。分支能让代码根据条件判断结果来决定执行路径,循环则负责重复执行特定代码,提高代码的复用性和效率。2.布尔运算符:条件判断的基石在进行条件判断时,布尔运算符是不可或缺的工具。C#提供了丰富的布尔运算符,包括比较运算符(如==、!=、、
C# 实现 Modbus TCP 服务端客户端寄存器
云端狂人
Modbus TCP tcp/ip 网络协议 网络
以下是一个使用C#实现ModbusTCP服务端的示例代码。这个示例使用了NModbus4库,这是一个开源的Modbus库,支持ModbusTCP和ModbusRTU协议。首先,您需要安装NModbus4库。您可以通过NuGet包管理器来安装:Install-PackageNModbus4然后,您可以编写以下代码来实现一个简单的ModbusTCP服务端:usingSystem;usingSystem
c#中的DataSet原理和用法
家里有蜘蛛
# c#学习笔记
c#中的DataSet1.DataSet是什么DateSet在c#程序中建立一个临时数据库下图所示:2…命名空间usingSystem.Data;3.DataSet的建立和用法下面是常用的方法//创建一个临时数据库DataSetds=newDataSet();//创建一个临时表DataTabledt=newDataTable();//添加自增主键DataColumndcId=newDataColu
51_Lua面向对象编程
袁庭新
Redis 7企业级开发实战教程 Lua 面向对象编程特性 Lua中实现面向对象的语法 Lua面向对象编程 Lua继承 Redis7 袁庭新
面向对象编程(ObjectOrientedProgramming,OOP)是一种非常流行的计算机编程架构。像C++、Java、Objective-C、Smalltalk、C#、Ruby等编程语言都支持面向对象编程。1.面向对象编程特性面向对象编程是一种编程范式,它使用“对象”来设计软件。对象是数据和行为的封装单元。面向对象编程的核心概念包括:类(Class):定义对象的蓝图,包括属性(数据字段)和
Unity C#静态类和静态对象
Tatalaluola
c# 开发语言 unity 学习 游戏引擎
(以下内容主要来源于ChatGPT,仅记录以供复习)静态类:在Unity中,你可以创建一个静态类来包含一些静态方法和静态属性,这些方法和属性可以在整个项目中直接调用,而无需实例化类对象。静态类的实例在整个应用程序中只有一个,而不是只有一个场景。这意味着在同一应用程序的不同场景中,你可以通过静态类来共享数据和功能。如果你重新加载场景(例如使用SceneManager.LoadScene),则静态类的
C#中级教程(2)——走进 C# 面向对象编程:从基础到进阶的深度探索
软件黑马王子
C# c# 开发语言
一、为什么选择面向对象编程在软件开发的演进过程中,随着程序规模和复杂度的不断增加,传统的编程方式逐渐暴露出局限性。面向对象编程应运而生,它就像是一位智慧的组织者,将程序中的功能进行模块化划分。每个模块各司其职,提供特定的功能,而且这些模块相互独立。这种模块化编程极大地提升了代码的可维护性和可扩展性,为开发者带来了诸多便利。例如,在一个电商系统中,用户管理、订单处理、商品展示等功能模块可以各自独立开
基于C#在WPF中使用斑马打印机进行打印
专注VB编程开发20年
c# wpf hadoop 斑马打印机 zpl打印机
最近在项目中接手了一个比较有挑战性的模块——用斑马打印机将需要打印的内容打印出来。苦苦折腾了两天,总算有所收获,就发到网上来骗骗分数-_-||项目中使用的打印机型号为GX430t的打印机,接手的时候,自己对于打印机这块儿是眼前一抹黑,啥都不知道。没办法一步步来。首先尝试使用WPF中的PrintDialog里面的PrintVisual和PrintDocument方法,打印机是一点反应都没有,最后得到
用文件资源管理器定位操作类 - C#小函数类推荐
lzhdim
c# 开发语言
/***用文件资源管理器定位操作类AustinLiu刘恒辉ProjectManagerandSoftwareDesignerE-Mail:
[email protected] :http://lzhdim.cnblogs.comDate:2024-01-1515:18:00使用方法例子:OpenInExplorerUtil.OpenFileInExplorer(Application.Executa
C#初级教程(5)——解锁 C# 变量的更多奥秘:从基础到进阶的深度指南
软件黑马王子
C# c#
一、变量类型转换:隐式与显式的门道(一)隐式转换:编译器的“贴心小助手”隐式转换是编译器自动进行的类型转换,无需开发者手动干预。这种转换通常发生在将取值范围小的数据类型赋值给取值范围大的数据类型时,就像把小盒子里的东西放进大盒子,完全没问题。例如:shortnum1=100;intnum2=num1;在这个例子中,short类型的num1可以直接赋值给int类型的num2,因为int类型的取值范围
使用 CefSharp 在 C# WinForms 应用程序中嵌入 Chromium 浏览器:全面指南
墨夶
C#学习资料2 c# 开发语言
亲爱的小伙伴们,今天我们要深入探讨如何在C#WinForms应用程序中使用CefSharp嵌入Chromium浏览器。CefSharp是一个开源的.NET绑定库,允许你在WindowsForms或WPF应用程序中轻松集成Chromium浏览器引擎。这使得你可以构建功能强大的桌面应用程序,拥有现代化的Web技术支持。本文将详细介绍如何在C#WinForms项目中安装和配置CefSharp,并通过一些
【Winform】深入理解C#中的异常处理:以WinForms应用程序为例
JosieBook
# WinForm案例 c# winform
文章目录前言一、示例背景二、异常处理分析三、异常处理的重要性结论前言在编程过程中,异常处理是一项至关重要的技能。它能够帮助我们优雅地处理运行时错误,从而增强程序的健壮性和用户体验。今天,我们将通过一个简单的WinForms应用程序示例,深入探讨C#中的异常处理机制。一、示例背景假设我们正在开发一个简单的Windows窗体应用程序(WinForms),其中包含一个名为Form1的窗体。在Form1加
C#串口通信上位机程序编写指南
屁伦
本文还有配套的精品资源,点击获取简介:上位机软件通常用于控制设备并与之通信,本课程将介绍如何使用C#语言编写一个串口通信的上位机程序。内容包括C#编程基础、串口通信概念、SerialPort类的使用、异常处理、以及如何实现数据解析等。通过实践案例,学生将学会如何在C#环境下与各种硬件设备进行通信,如嵌入式系统和PLC等。1.上位机软件定义和作用1.1上位机软件的定义在工业自动化、测试测量、通信等领
上位机和MYSQL连接_C#上位机与数据库连接初步学习经验分享一!
weixin_39961369
上位机和MYSQL连接
太一、定义连接字符串,用来链接SQLServerstringstr_con="server=.(服务器名称一般为.);database=WordBook(数据库名称);uid=sa(服务器登录名);pwd=123(服务器密码)";二、有了链接字符串之后,开始数据库操作1、数据库查询定义了一个查询方法,用来调用:publicDataSetqueryDatabase(stringsql)//sql是查
c#上位机开发学习
csdn-唯一
C# 初学 上位机开发 c# 串口通信
c#上位机开发学习一倒计时器少年去游荡,中年想掘藏,老年做和尚所用控件:**timer:**时间控制,此控件被启动后可以按照一定的时间间隔来运行,可以自行设定时间间隔。通过timer.start()或timer.stop()启动或停止。comboBoxprogressBar小结:诸如comboBox,它在窗口显示的数值可以通过comboBox.text=“123123”这样的语句来改变。而prog
C# 机器视觉工控通讯------HTTP上位机通讯
pi2705230
http c# 服务器 人工智能
C#机器视觉工控通讯------HTTP上位机通讯前言HTTP介绍超文本传输协议(HyperTextTransferProtocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应HTTP会话HTTP会话是一系列网络请求-响应事务。HTTP客户端通过建立到服务器上特定端口的传输控制协议(TCP)连接(通常是端口80,偶尔
多线程编程之join()方法
周凡杨
java JOIN 多线程 编程 线程
现实生活中,有些工作是需要团队中成员依次完成的,这就涉及到了一个顺序问题。现在有T1、T2、T3三个工人,如何保证T2在T1执行完后执行,T3在T2执行完后执行?问题分析:首先问题中有三个实体,T1、T2、T3, 因为是多线程编程,所以都要设计成线程类。关键是怎么保证线程能依次执行完呢?
Java实现过程如下:
public class T1 implements Runnabl
java中switch的使用
bingyingao
java enum break continue
java中的switch仅支持case条件仅支持int、enum两种类型。
用enum的时候,不能直接写下列形式。
switch (timeType) {
case ProdtransTimeTypeEnum.DAILY:
break;
default:
br
hive having count 不能去重
daizj
hive 去重 having count 计数
hive在使用having count()是,不支持去重计数
hive (default)> select imei from t_test_phonenum where ds=20150701 group by imei having count(distinct phone_num)>1 limit 10;
FAILED: SemanticExcep
WebSphere对JSP的缓存
周凡杨
WAS JSP 缓存
对于线网上的工程,更新JSP到WebSphere后,有时会出现修改的jsp没有起作用,特别是改变了某jsp的样式后,在页面中没看到效果,这主要就是由于websphere中缓存的缘故,这就要清除WebSphere中jsp缓存。要清除WebSphere中JSP的缓存,就要找到WAS安装后的根目录。
现服务
设计模式总结
朱辉辉33
java 设计模式
1.工厂模式
1.1 工厂方法模式 (由一个工厂类管理构造方法)
1.1.1普通工厂模式(一个工厂类中只有一个方法)
1.1.2多工厂模式(一个工厂类中有多个方法)
1.1.3静态工厂模式(将工厂类中的方法变成静态方法)
&n
实例:供应商管理报表需求调研报告
老A不折腾
finereport 报表系统 报表软件 信息化选型
引言
随着企业集团的生产规模扩张,为支撑全球供应链管理,对于供应商的管理和采购过程的监控已经不局限于简单的交付以及价格的管理,目前采购及供应商管理各个环节的操作分别在不同的系统下进行,而各个数据源都独立存在,无法提供统一的数据支持;因此,为了实现对于数据分析以提供采购决策,建立报表体系成为必须。 业务目标
1、通过报表为采购决策提供数据分析与支撑
2、对供应商进行综合评估以及管理,合理管理和
mysql
林鹤霄
转载源:http://blog.sina.com.cn/s/blog_4f925fc30100rx5l.html
mysql -uroot -p
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@centos var]# service mysql
Linux下多线程堆栈查看工具(pstree、ps、pstack)
aigo
linux
原文:http://blog.csdn.net/yfkiss/article/details/6729364
1. pstree
pstree以树结构显示进程$ pstree -p work | grep adsshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552) &n
html input与textarea 值改变事件
alxw4616
JavaScript
// 文本输入框(input) 文本域(textarea)值改变事件
// onpropertychange(IE) oninput(w3c)
$('input,textarea').on('propertychange input', function(event) {
console.log($(this).val())
});
String类的基本用法
百合不是茶
String
字符串的用法;
// 根据字节数组创建字符串
byte[] by = { 'a', 'b', 'c', 'd' };
String newByteString = new String(by);
1,length() 获取字符串的长度
&nbs
JDK1.5 Semaphore实例
bijian1013
java thread java多线程 Semaphore
Semaphore类
一个计数信号量。从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。
S
使用GZip来压缩传输量
bijian1013
java GZip
启动GZip压缩要用到一个开源的Filter:PJL Compressing Filter。这个Filter自1.5.0开始该工程开始构建于JDK5.0,因此在JDK1.4环境下只能使用1.4.6。
PJL Compressi
【Java范型三】Java范型详解之范型类型通配符
bit1129
java
定义如下一个简单的范型类,
package com.tom.lang.generics;
public class Generics<T> {
private T value;
public Generics(T value) {
this.value = value;
}
}
【Hadoop十二】HDFS常用命令
bit1129
hadoop
1. 修改日志文件查看器
hdfs oev -i edits_0000000000000000081-0000000000000000089 -o edits.xml
cat edits.xml
修改日志文件转储为xml格式的edits.xml文件,其中每条RECORD就是一个操作事务日志
2. fsimage查看HDFS中的块信息等
&nb
怎样区别nginx中rewrite时break和last
ronin47
在使用nginx配置rewrite中经常会遇到有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。
location /
{
proxy_pass http://test;
java-21.中兴面试题 输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 , 使其和等于 m
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class CombinationToSum {
/*
第21 题
2010 年中兴面试题
编程求解:
输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 ,
使其和等
eclipse svn 帐号密码修改问题
开窍的石头
eclipse SVN svn帐号密码修改
问题描述:
Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能。但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号、密码保存之后,就无法再变更了。
解决思路:
删除subclipse记录的帐号、密码信息,重新输入
[电子商务]传统商务活动与互联网的结合
comsci
电子商务
某一个传统名牌产品,过去销售的地点就在某些特定的地区和阶层,现在进入互联网之后,用户的数量群突然扩大了无数倍,但是,这种产品潜在的劣势也被放大了无数倍,这种销售利润与经营风险同步放大的效应,在最近几年将会频繁出现。。。。
如何避免销售量和利润率增加的
java 解析 properties-使用 Properties-可以指定配置文件路径
cuityang
java properties
#mq
xdr.mq.url=tcp://192.168.100.15:61618;
import java.io.IOException;
import java.util.Properties;
public class Test {
String conf = "log4j.properties";
private static final
Java核心问题集锦
darrenzhu
java 基础 核心 难点
注意,这里的参考文章基本来自Effective Java和jdk源码
1)ConcurrentModificationException
当你用for each遍历一个list时,如果你在循环主体代码中修改list中的元素,将会得到这个Exception,解决的办法是:
1)用listIterator, 它支持在遍历的过程中修改元素,
2)不用listIterator, new一个
1分钟学会Markdown语法
dcj3sjt126com
markdown
markdown 简明语法 基本符号
*,-,+ 3个符号效果都一样,这3个符号被称为 Markdown符号
空白行表示另起一个段落
`是表示inline代码,tab是用来标记 代码段,分别对应html的code,pre标签
换行
单一段落( <p>) 用一个空白行
连续两个空格 会变成一个 <br>
连续3个符号,然后是空行
Gson使用二(GsonBuilder)
eksliang
json gson GsonBuilder
转载请出自出处:http://eksliang.iteye.com/blog/2175473 一.概述
GsonBuilder用来定制java跟json之间的转换格式
二.基本使用
实体测试类:
温馨提示:默认情况下@Expose注解是不起作用的,除非你用GsonBuilder创建Gson的时候调用了GsonBuilder.excludeField
报ClassNotFoundException: Didn't find class "...Activity" on path: DexPathList
gundumw100
android
有一个工程,本来运行是正常的,我想把它移植到另一台PC上,结果报:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mobovip.bgr/com.mobovip.bgr.MainActivity}: java.lang.ClassNotFoundException: Didn't f
JavaWeb之JSP指令
ihuning
javaweb
要点
JSP指令简介
page指令
include指令
JSP指令简介
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
JSP指令的基本语法格式:
<%@ 指令 属性名="
mac上编译FFmpeg跑ios
啸笑天
ffmpeg
1、下载文件:https://github.com/libav/gas-preprocessor, 复制gas-preprocessor.pl到/usr/local/bin/下, 修改文件权限:chmod 777 /usr/local/bin/gas-preprocessor.pl
2、安装yasm-1.2.0
curl http://www.tortall.net/projects/yasm
sql mysql oracle中字符串连接
macroli
oracle sql mysql SQL Server
有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的:
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
Mysql 中 CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CON
Git fatal: unab SSL certificate problem: unable to get local issuer ce rtificate
qiaolevip
学习永无止境 每天进步一点点 git 纵观千象
// 报错如下:
$ git pull origin master
fatal: unable to access 'https://git.xxx.com/': SSL certificate problem: unable to get local issuer ce
rtificate
// 原因:
由于git最新版默认使用ssl安全验证,但是我们是使用的git未设
windows命令行设置wifi
surfingll
windows wifi 笔记本wifi
还没有讨厌无线wifi的无尽广告么,还在耐心等待它慢慢启动么
教你命令行设置 笔记本电脑wifi:
1、开启wifi命令
netsh wlan set hostednetwork mode=allow ssid=surf8 key=bb123456
netsh wlan start hostednetwork
pause
其中pause是等待输入,可以去掉
2、
Linux(Ubuntu)下安装sysv-rc-conf
wmlJava
linux ubuntu sysv-rc-conf
安装:sudo apt-get install sysv-rc-conf 使用:sudo sysv-rc-conf
操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。
背景知识
sysv-rc-conf是一个强大的服务管理程序,群众的意见是sysv-rc-conf比chkconf
svn切换环境,重发布应用多了javaee标签前缀
zengshaotao
javaee
更换了开发环境,从杭州,改变到了上海。svn的地址肯定要切换的,切换之前需要将原svn自带的.svn文件信息删除,可手动删除,也可通过废弃原来的svn位置提示删除.svn时删除。
然后就是按照最新的svn地址和规范建立相关的目录信息,再将原来的纯代码信息上传到新的环境。然后再重新检出,这样每次修改后就可以看到哪些文件被修改过,这对于增量发布的规范特别有用。
检出