C#
文章平均质量分 94
bluecard2008
这个作者很懒,什么都没留下…
展开
-
C#如何创建自定义控件以及添加自定义属性和事件使用
C#本身提供了很强大的控件库,但是很多控件库的功能只是一些基本的功能,就比如最简单的按钮,C#提供了最基础的按钮使用方法,但是如果要增加一些功能,比如按钮按下要一个图片,弹起要另一个图片这样的工作。当然,我们可以对相关按钮在点击函数中进行更改其背景图片,但是这对于大量的按钮调用来说十分不方便,代码重用率相当的高,会导致使用上的卡顿,在这种情况下,我们可以将这个功能封装起来,这样每次调用起来就很方便...原创 2020-02-06 20:12:38 · 4000 阅读 · 0 评论 -
C#中ListView详解
ListView是一个Windows 列表视图控件,该控件显示可用五种不同视图(LargeIcon,Details,SmallIcon,List,Tile)之一显示项的集合。对于这四种视图,官方文档是这么解释的:LargeIcon:每个项都显示为一个最大化图标,在它的下面有一个标签。效果如下:Details:每个项显示在不同的行上,并带有关于列中所排列的各项的进一步信息。最左边的列包含一个...原创 2020-01-10 13:19:39 · 841 阅读 · 0 评论 -
C#中新建用户控件示例
C#工具箱中已经自带了一些基础控件,对于要求不高的项目来说已经可以满足需求,如果觉得自带控件不好用的可以使用第三方的控件库,这个收费和免费的都有很多,如果这些还满足不了自己的个性化需求的就只能自己写了,基本上自己写的控件库根据自定义的程度不同可以分为三档:第一档:复合控件这类控件只是为了解决某一些重复出现的控件组合的需求而编写的,比如TrackBar和label组合显示的复合控件,这类控件从U...原创 2020-01-10 13:08:43 · 619 阅读 · 0 评论 -
C# 自定义用户控件
本例是制作一个简单的自定义控件,然后用一个简单的测试程序,对于初学者来说,本例子比较简单,只能起到抛石引玉的效果。我也是在学习当中,今后会将自己所学的逐步写出来和大家交流共享。第一步:新建一个控件库项目:myControl第二步:从工具箱里面拖动1个PictureBox、1个Button、6个Lable控件到用户界面上,布局如下: 如上图,设置pictureBox的Name为pic...原创 2020-01-10 12:50:17 · 298 阅读 · 0 评论 -
C# WinForm只允许运行一个窗体实例
大概看了看别人的方法,都是从语法的角度巧妙实现的。我要实现的目的是dialogForm.Show();点击按钮显示对话框窗体,如果窗体没有关闭,再次点击,不重复显示。我用了个笨方法,就是用一个静态类,在内存中保存个数据。记录窗体是否显示。classCGlobal{staticisShow=false;}在dialogForm.Show();之前判断一下。if(CGlobal....原创 2019-12-29 22:21:57 · 776 阅读 · 0 评论 -
WinForm 窗体属性 窗体美化
WinForm是·Net开发平台中对Windows Form的一种称谓。Windows窗体的一些重要特点如下:功能强大:Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的应用程序。操作方便:新的数据提供程序管理:数据提供程序管理提供易于连接OLEDB和ODBC数据源的数据控件,包括Microsoft SQL Server、Microsoft Access、Jet、D...原创 2019-12-29 22:21:08 · 775 阅读 · 0 评论 -
GDI+学习记录(8)- 画刷 Brush简介
画刷是用来填充区域的,在GDI+ 中,画刷分为五种: 单色画刷,也叫固体画刷(SolidBrush), 影线画刷(HatchBrush),纹理画刷(TextureBrush),线型渐变画刷(LinearGradientBrush),路径渐变画刷(PathGradientBrush)。这五种画刷全部都是由其共同的基类 Brush 类派生而来的,与画笔笔筒,画刷是用来填充区域的,所以画刷是没有宽度和...原创 2019-12-29 22:18:29 · 695 阅读 · 0 评论 -
GDI+学习记录(17)-获取系统已安装的所有字体
private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.Clear(Color.White); g.SmoothingMode = SmoothingMode.AntiAlias; ...原创 2019-12-29 22:16:50 · 247 阅读 · 0 评论 -
GDI+学习记录(1)-Graphics
Graphics类是GDI+的核心,其能够完成大部分的绘图、文本输出、几何图形的填充、坐标的转换等操作,在功能上,其与GDI中的DC(设备环境句柄 Device Context)是一致的,可以把其理解为一张绘图所需的“图纸”,各种绘图操作都是在这张“图纸”上进行的,这里笔者把其称为“绘图平面”。Graphics类的构造方法有如下几种:(1)从窗口的指定句...原创 2019-12-29 22:14:54 · 343 阅读 · 0 评论 -
C#中的双缓冲
在编程当中,或多或少会接触到图像编程,对于图像编程来说窗口闪烁是个常见的问题,当窗口有大量的复杂的图元数据需要重绘,或者拥有自定义控件中的窗口闪烁问题更是显而易见的。出现闪烁的原因有很多种,大部分原因主要是因为触发WM_PAINT消息时窗体进行了重绘操作,此过程先是用窗体的背景色擦除窗口表面,再把窗体的图像绘制上去,但是如果这2个操作不在同一时间段完成的话,就会先看到背景色(大部分为白色)接着才看...原创 2019-12-29 22:12:54 · 2531 阅读 · 0 评论 -
C#自定义控件简介(二)
接着上一篇文章讲,这次来说说C#自定义控件中的扩展控件(Extended Controls)的创建和使用。所谓的扩展控件就是在原有控件的基础上派生出新的控件,为了让大家更好的理解,这次就用C#中最基本的组件——Button来演示。最终的效果如下:好了,下面来说说创建的步骤:一. 创建一个Windows窗口控件库项目,命名为MyButton;二.编写控件代码,代码如下:...原创 2019-12-29 22:11:09 · 685 阅读 · 1 评论 -
Asp.net网站中 js通过iframe下载文件
1. 前台代码<iframe id="exportIFrame" style="display: none;"></iframe>//ajax代码<script type="text/javascript"> $.ajax({ url: "test.ashx?method=downFile&ID=" + ID...转载 2019-05-10 16:17:25 · 441 阅读 · 0 评论 -
asp.net 前后台页面交互数据的四种方案,非ajax
1.前台直接输出后台传递的数据后台代码:public string value = "1";前台页面代码:<div><%=value%></div>加入if else 简略写法<div><%=(value== "yes" ? "是yes" : "不是yes")%></div>2. 与第一种类似,多...转载 2019-05-10 16:16:22 · 510 阅读 · 0 评论 -
JQuery Ajax调用asp.net后台方法
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法。先来个简单的实例热热身吧。1、无参数的方法调用asp.net code:using System.Web.Script.Services; [WebMethod] public static string SayHello() { return "Hello Aja...转载 2019-05-10 16:10:27 · 303 阅读 · 0 评论 -
C# Ajax 返回json数据--前后台交互
前台JavaScript代码:<script> function checkLogin() { var name = $("#name").val(); var passward = $("#password").val(); console.log(name); co...转载 2019-05-10 16:01:30 · 4099 阅读 · 2 评论 -
ASP.NET前后台交互之JSON数据
最近由于项目需要做一个Ajax的搜集单表单的多重数据的需求,所以就采用了前端JQuery保存Object对象之后转换成JSON的数据源传递给后台处理的这样的形式,相信有不少人大多时候是接收后台给出的JSON数据格式,拿到前端来显示的形式。当然这也是我个人的经历简介而已,高手勿喷,写这篇文章的目的也是为了以后忘记了能够帮助会议。或许真的能够帮助到某些像我一个涉世不深的菜鸟。O(∩_∩)O 以...原创 2019-05-10 15:56:59 · 1011 阅读 · 1 评论 -
使用C#写WPS的excel 使用“WPS表格”导出Excel文档
下面利用最wps2015实现了一个简单的导入到出,参考http://blog.163.com/felex_cheng@126/blog/static/410470052013818325357/文章,也可也参考一下wsp二次开发文档http://www.wps.cn/wpsapi/funcapilist/page-1.htm,相应的dll引用如下图: ===================...转载 2018-11-15 11:17:34 · 6751 阅读 · 1 评论 -
c# webBrowser中操作网页元素全攻略
1、获取非input控件的值:webBrowser1.Document.All["控件ID"].InnerText;或webBrowser1.Document.GetElementById("控件ID").InnerText;或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");2、获取input控件的...转载 2018-11-21 01:01:41 · 8025 阅读 · 0 评论 -
C# ManualResetEvent和AutoResetEvent 使用笔记
一、两者区别1.ManualResetEvent 调用一次Set()后将允许恢复所有被阻塞线程。需手动在调用WaitOne()之后调用Reset()重置信号量状态为非终止,然后再次调用WaitOne()的时候才能继续阻塞线程,反之则不阻塞2.AutoResetEvent,调用一次Set()只能继续被阻塞的一个线程,多次调用Set()才行,但不需手动调用Reset();再次调用WaitOne()的时...转载 2018-04-27 13:31:32 · 1006 阅读 · 0 评论 -
C# Socket网络编程精华篇 (转)
http://www.cnblogs.com/weilengdeyu/archive/2013/03/08/2949101.html我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念:TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的...转载 2018-04-27 13:32:38 · 113 阅读 · 0 评论 -
Visual Studio 2017 添加引用报错(未能正确加载ReferenceManagerPackage包)
最近安装了VS2017,在开发时需要添加引用,于是像原来使用vs2012那样直接右键,添加引用,结果弹出一个错误提示“未能完成操作。不支持此接口”。真真是见了鬼了......google、度娘一顿搜,结果根本就没有这个错误信息的任何消息,倒是有很多同样问题描述的案例,不过他们的提示都是“未能正确加载ReferenceManagerPackage包”。因此估计跟我的是同一问题(不明白我的提示语怎会如...原创 2018-07-10 11:44:41 · 934 阅读 · 0 评论 -
.NET平台下几种SOCKET模型的简要性能供参考的讨论【转】
这个内容在cnblogs中也讨论过很多次了,这两天大概看了一些资料,看到一些简单的性能指标拿出来和大家讨论一下。Socket + Threads/ThreadPool大概性能:小于1500个连接 实现:Accept一个Socket,就交给一个线程去管理,比较笨,但也比较有效,因为是同步方式,控制起来很方便。高级点的,就是交给一个线程池去管理,线程池由系统自动托管,省去了开销线程的时间。...转载 2018-07-25 15:04:27 · 354 阅读 · 0 评论 -
VS2012+Win7网站发布详细步骤 iis
VS2012+Win7网站发布详细步骤 本机环境: 本文分三个部分介绍Web项目发布的常规方法,大神级别可以略过,主要是为了方便一些初学者。第一部分:VS2012把项目发布到文件系统。第二部分:IIS配置发布好的项目。第三部分:常见问题处理。 第一部分:VS2012把项目发布到文件系统。 1、打开你的VS2012网站项目,右键点击项目->菜单中选择“重新生成”一下网站项...原创 2018-07-16 10:07:09 · 297 阅读 · 0 评论 -
VS2012 + IIS Web 发布(三)——网站发布
VS2012 + IIS Web 发布(三)——网站发布 前面的工作如果都做好了,接下了就是真真正正的网站发布了,打开IIS 界面,具体操作步骤如下:一、基本的网站添加: 1、通过》控制面板》管理工具》启动 ‘Internet信息服务(IIS)管理器’ 进入IIS界面,右键单击网站》添加网站添加网站: 2、添加之前配置好的配置文件: 3、下一步点击...转载 2018-07-16 10:09:48 · 763 阅读 · 0 评论 -
C#多线程、并行和异步编程学习笔记
一,进程、应用程序域和对象上下文1,CLRCLR(Common Language Runtime,公共语言运行库),主要作用使定位、加载和管理.Net类型,同时负责一些底层细节的工作,如内存管理、应用托管、处理线程、安全检查等。2,进程进程是一个运行程序。进程是一个操作系统级别的概念,用来描述一组资源(比如外部代码库和主线程)和程序运行必须的内存分配。对于每一个加载到内存的*.ex...转载 2018-08-06 08:59:28 · 4578 阅读 · 3 评论 -
C#多线程
一、基本概念1、进程首先打开任务管理器,查看当前运行的进程: 从任务管理器里面可以看到当前所有正在运行的进程。那么究竟什么是进程呢?进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代...转载 2018-08-06 09:26:46 · 4751 阅读 · 1 评论 -
C#中实现并发的几种方法的性能测试
0x00 起因去年写的一个程序因为需要在局域网发送消息支持一些命令和简单数据的传输,所以写了一个C/S的通信模块。当时的做法很简单,服务端等待链接,有用户接入后开启一个线程,在线程中运行一个while循环接收数据,接收到数据就处理。用户退出(收到QUIT命令)后线程结束。程序一直运行正常(当然还要处理“TCP粘包”、消息格式封装等问题,在此不作讨论),不过随着使用的人越来越多,而且考虑到线程开...转载 2018-08-06 09:31:52 · 2138 阅读 · 0 评论 -
C# 并行任务——Parallel类
一、Parallel类 Parallel类提供了数据和任务的并行性;二、Paraller.For() Paraller.For()方法类似于C#的for循环语句,也是多次执行一个任务。使用Paraller.For()方法,可以并行运行迭代,迭代的顺序没有定义。 在For()方法中,前两个参数是固定的,这两个参数定义了循环的开头和结束。首先描述它的第一个...转载 2018-08-06 09:32:49 · 305 阅读 · 0 评论 -
C# AutoResetEvent
AutoResetEvent是.net线程简易同步方法中的一种。AutoResetEvent 常常被用来在两个线程之间进行信号发送 两个线程共享相同的AutoResetEvent对象,线程可以通过调用AutoResetEvent对象的WaitOne()方法进入等待状态,然后另外一个线程通过调用AutoResetEvent对象的Set()方法取消等待的状态。AutoResetEv...转载 2018-08-06 09:33:33 · 487 阅读 · 0 评论 -
C# 使用委托开始线程
很多时候写windows程序都需要结合多线程,在.net中用如下得代码来创建并启动一个新的线程。 public void ThreadProc(); Thread thread = new Thread(new ThreadStart(ThreadProc)); thread.IsBackground = true; thread.Start(); 但是...转载 2018-08-06 09:35:53 · 859 阅读 · 0 评论 -
C#使用多线程并发之异步委托IAsyncResult
使用委托开启多线程(多线程深入)1、用委托(Delegate)的BeginInvoke和EndInvoke方法操作线程 BeginInvoke方法可以使用线程异步地执行委托所指向的方法。然后通过EndInvoke方法获得方法的返回值(EndInvoke方法的返回值就是被调用方法的返回值),或是确定方法已经被成功调用。class Program{private delegate i...转载 2018-08-06 09:40:12 · 675 阅读 · 0 评论 -
BeginInvoke和EndInvoke方法
本系列教程主要包括如下内容:1. BeginInvoke和EndInvoke方法2. Thread类3. 线程池4. 线程同步基础5. 死锁6. 线程同步的7种方法7. 如何在线程中访问GUI组件一、线程概述在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行。这就需...转载 2018-08-06 09:55:31 · 292 阅读 · 0 评论 -
WebBrowser控件页面内容放大、缩小功能实现
在开发Winform程序中的WebBrowser控件时想要实现页面内容放大、缩小功能,由于IE版本问题,WebBrowser中没有Ctrl+滚轮实现放大、缩小页面内容的功能,只能自己实现了。实现具体代码如下:1。在引用中引用COM组件Microsoft Internet Controls。2.放大代码: 自定义private int v = 100;v += 10; obje...转载 2018-11-05 10:00:43 · 6878 阅读 · 0 评论 -
web浏览器与IE的关系,如何设置web浏览器工作在IE9模式下?
一,问题的提出偶然发现,Winform的里的web浏览器和IE浏览器实际安装的版本似乎并不同步,很有趣! 下面有张图,里面一个窗口是用IE9打开某网站,另一个窗口是用Winform的web浏览器+打开同样的网站,有意思的事情出现了。在IE9窗口中,这个网站左边菜单树无法显示,原因是IE9使用的技术较新,而网站使用的技术较旧,未能及时同步更新到支持IE9所致。该如何办呢?微软...转载 2018-11-05 10:13:54 · 1872 阅读 · 0 评论 -
C# webbrowser轻松实现自动填表
步骤如下:第一步:获取网页调用Webbrowser 的Navigate系列函数。等待网页装载完成,得到document对象。在调用 webBrowser.Document 之前,请确保 Webbrowser 网页装载完成,可以通过Webbrowser的DocumentCompleted事件进行监视。小技巧先指定一个变量:IsCompleted在调用Webbrowser 的Na...转载 2018-11-21 00:00:08 · 1730 阅读 · 0 评论 -
C# WinForm 加载自定义控件闪烁问题
WinForm加载多个自定义控件时,会出现很严重的闪烁问题,很卡,一块一块的加载(像打开网页时,网络很卡的那种感觉)简直没法忍受。在网上搜索了好久,网上大部分的方法是一下4种,但是都不能有效的解决问题。 1.将DoubleBuffered 设置 true,用双缓存处理Form界面内容加载,可以提高页面显示质量。或者SetStyle(ControlStyles.UserPa转载 2018-02-07 10:02:08 · 3401 阅读 · 1 评论