C#
文章平均质量分 86
阿双2009
绿水青山,是乃大富贵;清风朗月,无异真功名
展开
-
[C#]光标(cur/ani)转图片(Image)
光标转图片用C#方法做个记录: System.Drawing.Icon icon = System.Drawing.Icon.ExtractAssociatedIcon("***.cur"); Image img = Image.FromHbitmap(icon.ToBitmap().GetHbitmap());原创 2015-11-02 14:25:59 · 3138 阅读 · 0 评论 -
浅谈VS安装部署[续]
我在前文 浅谈VS安装部署 曾提到“系统必备”里面组件缺失是一大原因,MS不至于真的对这个对话框里面的组件毫无办法了吧?看了以下两篇文章才知道我们完全可以自己掌控这个对话框组件http://blog.csdn.net/memory_xj/article/details/5315778http://blogs.msdn.com/b/vsto/archive/2010/09/10/of原创 2012-08-22 16:26:08 · 1948 阅读 · 0 评论 -
C# 构造ColorComboBox
class ColorComboBox : ComboBox { /// /// 当前选中色 /// public Color SelectedColor { get { return Color.FromName(this.Text); } } //原创 2012-05-12 22:33:11 · 1691 阅读 · 0 评论 -
C# 求点在直线的投影点坐标
点在指定直线的投影点,即过点作一垂直于指定直线的直线,与指定直线的交点即为所求。这个问题其实回归到两条垂直直线的交点问题,回到最原始的初中几何知识,复习下如图示首先我们明确下已知条件,指定直线上任一点A,直线斜率k,点C,求点B说到斜率,就有不存在的情况,如图(2),显然这种情况B的横坐标=A的横坐标,B的纵坐标=C的纵坐标本文重点讨论第一种情况,其实也很简单,联立原创 2012-04-20 19:25:43 · 11399 阅读 · 0 评论 -
C# ToolStrip浮动及上/下/左/右 停靠
关于浮动工具条的制作,阿捷写了一篇很不错的文章,见:http://www.cnblogs.com/ajiefj/archive/2010/04/27/1722256.html阿捷这个工具条浮动后只能在顶部停靠,基于此,我在这边增加在左/右/底部停靠,停靠条件是浮动窗体紧贴或越过主窗体边缘。其实阿捷给出的代码已经相当详细了:) 我这里主要给出重写的ToolStrip代码段,增加了三个Tool原创 2012-02-14 17:14:53 · 11445 阅读 · 4 评论 -
C# 编写带图标和tooltip的ListBox
上午刚写了一篇关于带ToolTip的ListBox控件,这一篇是针对所有项,无论项文本长度有无超出控件,都会呈现ToolTip。现在这一篇基础上加一些限制并引进图标显示,只对超出部分的项才呈现ToolTip,项文本对超出部分用“...”替代详见代码:一、自定义项 /// /// 自定义项 /// class MyListBoxItem : IDi原创 2012-01-07 21:02:53 · 8346 阅读 · 13 评论 -
C# 编写带图标和tooltip的ListBox[续]--Item背景色交替变化
跟随前文http://blog.csdn.net/luols/article/details/7184155的脚步继续探索,我们对重写的ListBox项背景色加以控制,让其交替变化显示,并对选中项背景色用渐变刷子,当项被选中时,背景色有一个渐变过程,我们先看下最终的效果:关键代码在前文已有详尽描述,这里只补充三个属性,以及OnDrawItem方法的重写三个属性(已设置默认值):原创 2012-01-08 16:50:33 · 6830 阅读 · 3 评论 -
C# 编写带ToolTip的ListBox
WinForm里面的ListBox控件存在这样一个问题,当项文本长度超过控件宽度时,超出部分的文本直接被截掉,也不会出现提示信息,真是一大不幸!!幸运的是让我看到这篇C++重写的带Tooltip的ListBox,所以造就了C#版的TipListBox class TipListBox : ListBox { ToolTip tip;原创 2012-01-07 11:01:27 · 5424 阅读 · 2 评论 -
C# 多线程之新线程延时执行
using System;using System.Threading;namespace ConsoleApplication1{ class Program { public static ManualResetEvent mre = new ManualResetEvent(false); static void M原创 2011-11-25 11:25:02 · 13770 阅读 · 0 评论 -
用户控件 委托事件
如果对委托和事件不甚清楚的朋友,可先参考:http://www.cnblogs.com/huomm/archive/2007/12/04/982869.html加深理解。 本例的用户控件仅放置俩Button /// /// 操作枚举类原创 2011-04-02 14:59:00 · 1140 阅读 · 0 评论 -
浅谈VS安装部署
对于vs自带的安装部署,说实话真的很有局限性,必备组件里边的组件不全是一大原因(可以对其进行增删改,见浅谈VS安装部署[续])比如这边只有office2007 pia组件,而没有2010的pia。再如下面的vsto30组件,要是安装了vs的补丁包sp1,这边的vsto30组件则变成vsto30 sp1,不会再出现vsto30,这将直接导致在未安装vsto组件的机器安装软件时报错,如图示原创 2012-08-20 17:54:43 · 3324 阅读 · 2 评论 -
[C#]GDI+在鼠标移动(MouseMove)时画平滑曲线
关于平滑曲线,相信很多人在网上提过这个问题,如何画出平滑曲线?我也很想知道答案,究竟如何才能在MouseMove事件里画出真正平滑又柔和的曲线?注意本文讨论的重点是在MouseMove事件里,并非相对固定的几个点针对这个问题,网上给出了很多种方案。看到最多的是用类似gdi的moveto,lineto实现,gdi+则是drawline,但这个方案有一个很明显的漏洞:在MouseMove事件里,当原创 2012-09-29 16:46:16 · 13603 阅读 · 4 评论 -
[C#]解决多语言操作系统找不到everyone NTAccount问题
NTAccount acct = new NTAccount("Everyone"); FileSystemAccessRule allowRule = new FileSystemAccessRule(acct, FileSystemRights.FullControl, InheritanceFlags.ContainerInheri原创 2012-11-26 11:13:24 · 2068 阅读 · 0 评论 -
C# 简易画板
一眨眼2012就来了,真是时光飞逝~~由于工作需要,那就以这篇画板为2012的开篇吧 关于画板这个东西,而且是简易画板,网上搜一下也是一箩筐一箩筐的,有些做得很不错,但那已经超出简易级别了:)属于简易级别的却没找到自己中意的后来综合了几篇简易画板+自己的idea,造就了本Demo。闲话不多说,先上图 代码using System;using System.Coll原创 2012-01-02 17:54:14 · 17101 阅读 · 30 评论 -
FlowLayoutPanel内用户控件通过上下移动进行顺序调整
我觉得FlowLayoutPanel容器真心是一个很好用的容器,尤其对其里面的控件有位置要求的时候,任意删除其中一个控件,后面的控件会自动上移,这很好的满足了本文所要阐述的需求要点:控制控件的顺序。样图如下:用户控件源代码:using System;using System.Windows.Forms;namespace Demo{ public partial cla原创 2015-02-10 16:46:42 · 15266 阅读 · 1 评论 -
[C#]使用mciSendString播放背景音乐并控制音量(wav等)
C# 播放音乐有很多方法,比如API的PlaySound,但是这个没法控制原创 2014-08-22 10:05:10 · 10953 阅读 · 3 评论 -
C#导出到Excel或PDF
C#导出到Excel和前文:Excel画斜线以及Excel宏的利用原创 2014-05-27 10:22:52 · 3826 阅读 · 1 评论 -
[C#]桌面模式下GDI绘制(全透明背景)
有时候我们需要这样的需求:在桌面模式下当画板用,在上面写写画画,添加一些批注等。很自然我们会想到用GDI绘制,可是用GDI,免不了要有一块“板”绘制,也就是免不了窗体,既然要在桌面模式下,那现在的问题就转到如何把窗体设置成全透明模式。透明,很容易想到窗体的Opacity属性,可是若把这个设成全透明,那完全没效果,根本找不到窗体在哪,运行就跟没运行一样,更不用说获得窗体焦点了,可见这条路是行不通原创 2014-04-16 17:25:21 · 14907 阅读 · 5 评论 -
[C#]Excel画斜线以及Excel宏的利用
我们经常需要把数据导出到Excel,导出过程中很可能需要对导出后的Excel格式进行控制,这里我谨以简单的画斜线为例对C#如何导出Excel&&Excel格式进行简单控制做一个简单的记录首先我一开始并不知道如何在C#代码在Excel中画斜线,而Excel里面自带的宏帮了我大忙,我们可以充分利用这个宏来记录下操作的源代码,首先录制宏,然后在Excel中做自己需要的动作(我这里就做了画斜线),停止原创 2014-04-04 17:21:00 · 3415 阅读 · 0 评论 -
CheckedListBox至少保留一个勾选项
有时我们需要这样的需求,CheckedListBox至少得保留一个勾选项,不允许全部不选,特此记录以备不时之需 void mCheckedListBox_ItemCheck(object sender, ItemCheckEventArgs e) { if (mCheckedListBox.CheckedIndices.Count == 1原创 2014-04-03 10:26:07 · 1645 阅读 · 0 评论 -
[C#]多个TrackBar控件联动设置百分比
我们有时候需要设计一个比重设置,当然几个比重合计之和肯定要100%,就这么一个简单的需求,换成是你,你会如何设计?个数不确定,另一个则是要保证100%。设计这样的方案困扰了我好几天,最开始设计了几个下拉框,但因操作不方便被痛批好几次,我不知道有没现成的资源可用,山穷水尽后想到TrackBar控件,虽然不能说这是最好的,但起码操作起来还算方便,多个TrackBar联动控制最大的难点在于如何保证几个T原创 2014-04-02 10:21:56 · 10312 阅读 · 1 评论 -
[C#]api解决X64系统注册表被重定向问题
我们知道,X64系统引入了一项技术叫文件和注册表的重定向。之所以有这个技术,是为了将32位程序和64位程序分离开。这种在64位平台上运行32位程序的模拟器被称为WOW64。WOW64是"Windows 32 on Windows 64"的简称,它在系统层中另提供了一层,以支持老式的32位程序。有兴趣的读者可查阅相关资料,我这边只讨论关于注册表的重定向:如果是32位程序,对注册表的操作不论是原创 2012-11-29 10:18:30 · 4707 阅读 · 0 评论 -
消息机制 模拟点击指定窗体按钮
[System.Runtime.InteropServices.DllImport("User32.dll")] public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, in原创 2011-08-11 23:04:26 · 1202 阅读 · 3 评论 -
C# 定时器精确到毫秒并对其进行误差测试
<br />.Net里面的System.Windows.Forms.Timer,当设置其Interval到毫秒级别(<1000)时,会出现令人咋舌的误差,而且有两方面会使误差进一步拉大<br />1、Interval设的越小,误差越大;<br />2、随着定时器工作时间的推移,误差也越大<br />下面是一段Demo测试代码,仅供参考:<br />namespace MyTimerDemo{ public partial class Form1 : Form { #原创 2011-04-16 12:38:00 · 11817 阅读 · 3 评论 -
用户控件内部操控 其所在窗体 菜单属性
<br />ListBox放在用户控件里面,该用户控件所在窗体有一主菜单,而本Demo简单的展示了如何控制某菜单项的Enabled属性.<br /> public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } private void listBox1_S原创 2011-04-03 20:08:00 · 1074 阅读 · 0 评论 -
传说中的反射
<br /> public string str = "spp";<br /> public string spp = "very good";<br /> public string myWeb = "abc";<br /> public string myWeb2 = "abc";<br /> public Form3()<br /> {<br /> InitializeComponent();<b原创 2010-07-23 21:39:00 · 798 阅读 · 0 评论 -
对XML文件进行合并 并读入到DataSet
先定义XML的结构信息如下ValueValueValueValueValueValueValueValue /// /// 创建DataSet结构,与XML文档结构保持一致 /// /// 数据集原创 2010-07-23 17:55:00 · 2104 阅读 · 0 评论 -
Socket基础之客户端
try { //实例化一个服务器端指定端口的IPEndPoint IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("*.*.*.*"), 2000); Socket ConnSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, P原创 2010-06-29 17:37:00 · 1479 阅读 · 0 评论 -
操纵XML文件
<br />我的XML文件是这样的:<br /><?xml version="1.0" encoding="utf-8"?><configuration> <root1> <subRoot1>Default</subRoot1> <subRoot2>Default</subRoot2> <subRoot3>Default</subRoot3> </root1> <root2> <subRoot1>Default</subRoot1> </r原创 2010-06-28 22:05:00 · 3701 阅读 · 0 评论 -
Socket基础之服务端
<br /> try { int port = 2000; //端口号 string hostInfo = Dns.GetHostName(); //主机名 IPAddress[] addressList = Dns.GetHostAddresses(hostInfo); //获取IP地址列表 //用正则判断IP地址列表中是否原创 2010-06-29 17:35:00 · 4083 阅读 · 0 评论 -
listView分组及其右键菜单的动态添加
<br /> #region listView分组 imageList1.Images.Add("ImageKey1", Image.FromFile("图片路径")); imageList1.Images.Add("ImageKey2", Image.FromFile("图片路径")); imageList1.Images.Add("ImageKey3", Image.FromFile("图片路径"));原创 2010-06-28 17:46:00 · 6338 阅读 · 0 评论 -
用linq对数组排序及简单运算
<br /> // 初始数组 int[] arr = { 8, 10, 5, 6, 45, 676, 20, 35 }; // 对其按升序排序 var q = arr.OrderBy(s => s); /// 对其按降序排序 /// var q = arr.OrderByDescending(s => s);原创 2010-06-28 16:27:00 · 5649 阅读 · 0 评论 -
DataView 过滤、排序、DISTINCT功能
DataView不知道还有这么好用的功能,真是一种享受。多说无益,还是让我们一起去享受下这种快感吧 这里首先新建了一个数据集testDataSet,新建一testDataTableDataTable添加了4列字段字段名 类型stringVar System.StringintVar原创 2010-04-28 16:42:00 · 4671 阅读 · 0 评论 -
System.DateTime初始化为null的思维痕迹
DateTime dt = null;如果我们这样写,生成时就会提示错误信息:无法将Null转换成"System.DateTime",因为它是一种不可为null值的类型 之前也一直以为DateTime类型的对象无法初始化为空值null,刚在网上查了相关资料后找到了解决方法,现整理一下: DateTime? dt = null; //初始化为null dt =原创 2010-04-23 23:18:00 · 10826 阅读 · 4 评论 -
动态跟踪循环体 避免“假死”
<br /> for (int i = 1; i < 10000; i++)<br /> {<br /> this.label1.Text = i.ToString();<br /> Application.DoEvents();<br /> System.Threading.Thread.Sleep(1000);<br /> }原创 2010-06-06 12:21:00 · 790 阅读 · 0 评论 -
解决 点击ListView空白处事件不响应问题
<br />有时看似很小的一个问题却可能困扰我们许久,比如ListView这个问题,其Click事件只是在有选中项的时候才触发,点击其空白处(无选中项)是不会触发Click事件的,找了许久才终于找到解决这个问题的“良方”<br /> int xPos, yPos;<br /> /// <summary><br /> /// 实时跟踪listView1的当前坐标<br /> /// </summary><br /> private void原创 2010-08-02 10:51:00 · 7326 阅读 · 2 评论 -
Socket基础之服务端(基于UDP)
<br /> //设置“终结点” IPEndPoint ipe = new IPEndPoint(IPAddress.Any, 8001); //创建与客户机连接的套接字(基于UDP协议无需侦听Socket) Socket ConnSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);原创 2010-08-11 16:23:00 · 1222 阅读 · 0 评论 -
[C#]激活并刷新已运行例程 --> EXE
<br />本文介绍如何在程序入口处控制运行一次EXE,再次启动只会激活并刷新已运行例程。<br />刷新数据通过启动参数来传递,本文启动参数传递的是一个文件路径,详看代码:<br /> <br />入口处:<br /> static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void M原创 2011-05-14 16:33:00 · 1306 阅读 · 0 评论 -
C# 让ListBox可编辑
<br />本文思想来自:http://www.lwolf.cn/blog/article/code/csharp-editable-listbox.htm 非常感谢!<br /> <br />正常情况下,.Net自带的ListBox是无法进行编辑的,欲让它可编辑,我们可添加一个隐藏的文本编辑框,当双击项的时候显示编辑框,更新项内容后隐藏编辑框即可。<br />欲调整ListBox每个项的高度,ListBox有一个自带属性ItemHeight,于是我们很自然的就设这个属性值,结果却发现改不动,改后又返回默认原创 2011-03-03 15:10:00 · 11115 阅读 · 0 评论 -
在ListView上显示带有图片的提示信息
本文重构了ToolTip组件,只为可以在上面显示图片所作,具体参考如下代码:重写ToolTipusing System.Drawing;using System.Drawing.Drawing2D;using System.Windows.Forms;using System;using System.Diagnostics;using System.ComponentModel;namespace CustomToolTipDemo{ /// ///原创 2010-11-14 12:28:00 · 4297 阅读 · 1 评论