文章列表
C#制作WinForm控件-自定义控件基础知识【csdn推荐精品文章】
自定义控件基础知识
一 、概述
Windows 窗体控件是可再次使用的组件,它们封装了用户界面功能,并且可以用于客户端 Windows 应用程序。“Windows 窗体”不仅提供了许多现成控件,还提供了自行开发控件的基础结构。可以组合现有控件、扩展现有控件或创作自己的自定义控件。Windows 窗体控件是从 System.Windows.Forms.Control 直接或间接派生的类。以下列表描述了开发 Windows 窗体控件的常见方案:
· 组合现有控件来创作一个复合控件。
复合控件封装有一个可以作为控件重复使用 ...
C#_让WinForm窗体拥有动画效果(淡入淡出等…)
某些程序会有弹窗,在屏幕右下角缓缓出来,又缓缓关闭,这类效果自然使用原生态的API最合适不过了。
首先API声明:
/// <summary>
/// 窗体动画函数
/// </summary>
/// <param ...
在Winform上开发,常常用到TreeView这个控件,比如我们做GIS开发就常用它来做图层控制。TreeView有很多可以定制的属性来改变它的外观,但如果定制仍无法满足你的要求,又不想花钱买更好的控件,就要利用TreeView提供的自定义绘制功能了。
像这样简单的进行一些自定义的绘制,在大部分情况下就满足客户的需求了。要做到它其实很简单,重点就是:
DrawMode = TreeViewDrawMode.OwnerDrawAll;
DrawNode += CustomDrawNode;
把DrawMode这个属性改变以后,绘制每一个菜单项的权利都交到你手里了。然后在你的CustomD ...
最近客户提出一个需求,无法忍受通过checkbox来实现treeview多选.而必须改用统一的 ctrl,shift.
参照了csdn上的几篇文章后,实现了这样的treeview.
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Text;
namespace MyTreeview
{
public delegate void ...
public partial class Admin_CheckCode : System.Web.UI.Page
{
private Bitmap validateimage;
private Graphics g;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string VNum = MakeValidateCode();
Session["VNum"] ...
时间过的很快,早上七点多起来,刷牙洗脸吃早饭,然后按每天的流程一样,骑自行车去上班.
从住的地方到上班的地方,一般需要骑十来分种,我发现一个很奇怪的现象,每次我骑车经过红绿灯的时候,好像都是红灯,不知道是不是每天的时间都差不多,红绿灯的时间也刚好在那个点上.
今天上午带我的那位大哥,把一个TPS交给我,说叫我看懂这个TPS,并且以后这个TPS的维护任务交给我,听到大哥这么吩咐,俺也只能是乖乖的先自己看了,看不懂的地方就问他.
其实我个人觉得TPS的开发和升级本身不是很难,如果看懂了一个TPS,知道一个TPS用来做什么的,怎么样来做,并且经过什么样的步骤,流程之后.其它的东西都好处理. ...
指针的指向可以变,但是不能通过指针修改数据!
//常量指针--指向字符串常量,所指向的字符串内容不能变,但是指向的地址可以变化
int i=2;
int j=12;
int const * pi;
pi=&i;
pi=&j;
printf("%d\n pi real=0x%d\n",*pi,pi);
//指针常量--指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化
int i=2,j=12;
int * const pi=&i;
*pi=22;
在用VC6.0向导生成的头文件中,经常可以看见如下的代码段:
#if !defined(AFX_RESIZABLELAYOUT_H__INCLUDED_)
#define AFX_RESIZABLELAYOUT_H__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
...
#endif // !defined(AFX_RESIZABLELAYOUT_H__INCLUDED_)
对于宏有基本了解的朋 ...
今天看了哪些资料
时间管理
时间管理---时间是个常数,没有人能改变它,我们能做的就是怎么样去减少浪费时间,最大利用我们拥有的时间!
IPD流程
一个让IBM公司从负责80亿,到盈利80亿的一种方案
装备开发业务介绍
_stdcall是Win32的函数调用方式,win API都是采用这种方式,按照从右往左的方式对函数参数进行压入堆栈。不同于 cdecl--c语言中的标准调用
_stdcall包含两个意思,第一是按照C风格传递参数即参数从右自左压入堆栈,函数内部正好从左自右读出参数,第二是函数执行清除堆栈,即调用函数是堆栈站中压入了参数占用了位置,这些位置将有调用函数负责清空。如果参数个数未知,函数在编译期就不知到底要在堆栈里清除多少个字节,这样_stdcall就不能用了,这样的函数如sprintf函数,就使用PASCAL调用约定了,函数不负责清除堆栈。不过这些事情均有编译器代劳,我们不用理睬 ...
内容摘要 C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识、硬件知识、工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大家可以多了解一些,在遇到问题时多思考、多实践。 一般情况下,我们只需要知道分成编译和连接两个阶段,编译阶段将源程序(*.c)转换成为目标代码(,一般是obj文件,至于具体过程就是上面说的那些阶段),连接阶段是把源程序转换成的目标代码(obj文件)与你程序里面调用的库函数对应的代码连接起来形成对应的可执行文件(exe文件)就可以了,其他的都需要在实践中多多体会才能有更深的理解。
C语言编译全过程
编译的概念:编译程序读取源程序 ...
解析C语言中的sizeof 一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大 ...
一、请填写BOOL , float, 指针变量与“零值”比较的if 语句。(10 分) 请写出BOOL flag 与“零值”比较的if 语句。(3 分) 标准答案: if ( flag ) if ( !flag ) 如下写法均属不良风格,不得分。 if (flag == TRUE) if (flag == 1 ) if (flag == FALSE) if (flag == 0) 请写出float x 与“零值”比较的if 语句。(4 分) 标准答案示例: const ...
句柄是什么?有什么用?
概念描述
单从概念上讲,句柄指一个对象的标识,而指针是一个对象的首地址。从实际处理的角度讲,即可以把句柄定义为指针,又可以把它定义为同类对象数组的索引,这两种处理方法都有优缺点,至于选用哪种方式,完全应该看实际需要,这可以说是一种程序设计上的技巧。那种单纯认为句柄是指针或索引的想法都是机械的、不确切的。
其实,在Windows中类似的处理是很多的、很灵活的。再具个相似的例子:
我们知道,在Windows中有个函数叫做CallWindowProc。顾名思义,它的作用就是向指定的窗口过程传递一个消息。你也许会想,既然我已经有了窗口过程的指针,为什么我 ...