【WinForm】创建自定义控件

虽然VS为我们提供了很多控件可以使用,但有时候这些控件仍然不能满足我们的要求,比如我们要对部分控件进行一些个性化的定制,例如美化控件,这时候就需要自己绘制控件,或是在原有控件的基础上进行修改自定义控件分为三种  1、组合控件(CompositeControls):在原有控件的基础上根据需要进行组合,一般就用第一种  2、扩展控件(ExtendedControls):继承自原有控件,添加一些新的属性
阅读本文

C# 自定义控件制作和使用实例(winform)

本例是制作一个简单的自定义控件,然后用一个简单的测试程序,对于初学者来说,本例子比较简单,只能起到抛石引玉的效果。我也是在学习当中,今后会将自己所学的逐步写出来和大家交流共享。 第一步:新建一个控件库项目:myControl 第二步:从工具箱里面拖动1个PictureBox、1个Button、6个Lable控件到用户界面上,布局如下:       如上图,设置pictureBox的Name为pic
阅读本文

获取根目录地址

最近在玩window服务涉及到根目录的config文件,弄得我很烦,经过搜索做以上总结根据项目来选取获取根目录的语句 1、取得控制台应用程序的根目录方法WindowsServer:AppDomain.CurrentDomain.BaseDirectory控制台程序:Environment.CurrentDirectory2、取得Web应用程序的根目录方法 方法1、HttpRuntime.AppDo
阅读本文

winform 利用委托实现窗体传值

父窗体:Form1  子窗体:Form2  点击Form1,弹出Form2,点击按钮返回值给Form1 首先在Form2中定义委托和事件: //声明委托 和 事件 public delegate void TransfDelegate(String value); public partial class Form2 : Form {
阅读本文

.NET Window服务启动又马上停止,报错IO.FileNotFoundException

最近公司需要开发一个Window服务推送系统,读取MongoDB写入消息队列,推送到各终端平台但是在开发完成,最后的部署阶段,选中服务右击启动看似正常,服务显示已启动(但实质已经被终止,因为Window服务列表需要刷新才更新最新状态)但是观察数据状态一直没有更新,消息也没有推送成功,才发现在windows系统日志中,有两个报错在这两个错误页面看了一遍又一遍,又没标明具体哪儿错了,为啥终止,开始
阅读本文

改善C#程序的建议8:避免锁定不恰当的同步对象

改善C#程序的建议8:避免锁定不恰当的同步对象在C#中让线程同步的另一种编码方式就是使用线程锁。所谓线程锁,就是锁住一个资源,使得应用程序只能在此刻有一个线程访问该资源。可以用下面这句不是那么贴切的话来理解线程锁的作用:锁,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解成new出来的普通对象。既然需要锁定的资源就是一个C#中的对象,我们就该仔细思考,到底什么样的对象能够成为一个锁对象(也
阅读本文

WinForm中使用WPF的控件

在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件;步骤1:创建WinForm工程;步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建或者添加现有的WPF用户控件工程;步骤3:在WPF中创建自定义的控件,或者添加WPF控件到面板上;步骤4:在WinForm面板上添加ElementHost控件(工具箱中);步骤5:生成解决方案;步骤6:在
阅读本文

WinForm控件开发总结(二)------使用和调试自定义控件

在上一篇文章里我们创建了一个简单的控件FirstControl,现在我来介绍一下怎么使用和调试自己的控件。我希望将过程写的尽可能的详细,让想学习控件开发的朋友容易上手,高手们见谅。      在同一个solution里添加一个Windows Application工程(在Solution Explorer里右键点击CustomControlSample solution选择Add->N
阅读本文

窗体背景透明

一共需要俩个Form窗体,我也是看到网上别人的方法进行学习知道的方法:1,第一层窗体       1)  ,成透明this.Opacity = 0.9,这个透明度由自己的需求来设定       2) ,设置成无边框属性this.FormBorderStyle = FormBorderStyle.None;       3) ,到属性面板里面找到Locked,设置为True;可以通过Location
阅读本文

工作感悟20170919

不知不觉写了6年多代码了,还记得12年3月13日,入职的第一天接到的任务就是更新一个Framework2.0框架的Winform程序。还记得那是个HIS系统的住院医嘱界面,前台界面在VS2005里都没法打开(因为控件命名空间等问题VS无法识别)。然后行数接近2W行。当时内心是崩溃的,从来没见过这么多行数的cs文件。当时下班就和同事说要不要明天跑路,最后还是留下来了。这一干就是3年多,无奈不甘心一直
阅读本文

在DataGridView控件中实现冻结列分界线

我们在使用Office Excel的时候,有很多时候需要冻结行或者列。这时,Excel会在冻结的行列和非冻结的区域之间绘制上一条明显的黑线。如下图:  (图1)WinForm下的DataGridView控件也能实现类似的冻结行或者列的功能(参见:http://msdn.microsoft.com/zh-cn/library/28e9w2e1(VS.85).aspx) ,但是呢,DataGridVi
阅读本文

WPF基础系列之 资源

(一)  资源分类程序级资源:也称为二进制资源,将数据存储在程序主体之外的文件里。外部文件与程序主体分离,为避免丢失或损坏,编译器充许把外部文件编译进程序主体、成为程序主体不可分割的一部分,即为传统意义上的程序资源。对象级资源:每个界面元素都可以携带自己的资源并可被自己的子级元素共享。WPF可同时支持程序级资源和对象级资源。(二)  WPF对象级资源的定义与查找检索资源:先查找控件自己的Resou
阅读本文

java一些对象概念扫盲帖(DO VO DTO PO)

BO:Business Object,业务对象。主要是承载业务数据的实体。处理业务逻辑的时候使用,数据结构也是针对业务逻辑建立的。PO:persistence Object,持久化对象。数据最终要存储,无论以何种形式存储,都必须要持久化。加入使用关系数据库存储,一个PO对应一条数据库的记录,或者是对象从数据库查询出来的结果集的一条记录。DAO:Data Access Object,数据访问对象。包
阅读本文

C#传递参数调用exe程序

今天公司让我把Winform程序里的一块单独成一个exe文件,从原程序中打开新的exe程序,这就涉及到参数的传递,故来记录下传递参数到exe程序的方式第一种方式首先在程序A中添加引用using System.Diagnostics; string strA = “hello“ + “,“ + “world“; Process pro = Process.Start(@
阅读本文

了解一些多线程相关的知识

一、基础知识a)多线程的基础类为Thread,实际应用中一般用线程池,而不会直接用到Thread类。Thread基本的使用为:int i = 5;Thread thread = new Thread((p) => {  Console.WriteLine(p);});thread.Start(i);可以用lambda写法,也可以指向一个方法,参数通过Start(i)来传递。b) 线程间的同步有几种
阅读本文

C# WinForm开发系列之c# 通过.net自带的chart控件绘制饼图,柱形图和折线图的基础使用和扩展

一.需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图。 2.生成的饼图有详细文字的说明。 1.设置chart1的属性Legends中默认的Legend1的Enable为false; 如图1所示: 图12.设置Series的ChartType为Pie,如图2所示: 图2 图33.后台绑定数据      List<string> xData = new List<s
阅读本文

C# WinForm 跨线程访问控件

问题出现: 在WinForm 处理多线程访问主线程的控件时候,就会出现如图所示的错误对话框:       解决方案:     方案一:去掉线程访问主线程UI控件的安全检查,使用: Control.CheckForIllegalCrossThreadCalls = false;   方案二:使用委托,将对主线程的UI控件操作推送了该线程的消息队列里,使用的方法为:Invoke方法和BeginInv
阅读本文