C#开发WinForm中 Window 消息大全

C#开发WinForm中 Window 消息大全
C#开发WinForm中 Window 消息大全

北大青鸟中关村:C#开发WinForm中Window 消息大全

消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。北大青鸟中关村:消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows 单元中是这样声明的:

type TMsg = packed record hwnd: HWND; //窗口句柄message: UINT;//消息常量标识符wParam: WPARAM ;// 32位消息的特定附加信息lParam: LPARAM ;// 32位消息的特定附加信息time: DWORD;//消息创建时的时间pt: TPoint; //消息创建时的鼠标位置end ;

消息中有什么?是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。

lParam 通常是一个指向内存中数据的指针。由于WParam、lParam 和Pointer都是32位的,因此,它们之间可以相互转换。

public class WindowsMessage

{

public const int WM_NULL = 0x0000; //

public const int WM_CREATE = 0x0001; //应用程序创建一个窗口

public const int WM_DESTROY = 0x0002; //一个窗口被销毁

public const int WM_MOVE = 0x0003; //移动一个窗口

public const int WM_SIZE = 0x0005; //改变一个窗口的大小

public const int WM_ACTIVATE = 0x0006; //一个窗口被激活或失去激活状态;

public const int WM_SETFOCUS = 0x0007; //获得焦点后

public const int WM_KILLFOCUS = 0x0008; //失去焦点

public const int WM_ENABLE = 0x000A; //改变enable状态

public const int WM_SETREDRAW = 0x000B; //设置窗口是否能重画

public const int WM_SETTEXT = 0x000C; //应用程序发送此消息来设置一个窗口的文本

public const int WM_GETTEXT = 0x000D; //应用程序发送此消息来复制对应窗口的文本到缓冲区

public const int WM_GETTEXTLENGTH = 0x000E; //得到与一个窗口有关的文本的长度(不包含空字符)

public const int WM_PAINT = 0x000F; //要求一个窗口重画自己

public const int WM_CLOSE = 0x0010; //当一个窗口或应用程序要关闭时发送一个信号

public const int WM_QUERYENDSESSION = 0x0011; //当用户选择结束对话框或程序自己调用ExitWindows函数

public const int WM_QUIT = 0x0012; //用来结束程序运行或当程序调用postquitmessage函数

public const int WM_QUERYOPEN = 0x0013; //当用户窗口恢复以前的大小位置时,把此消息发送给某个图标

public const int WM_ERASEBKGND = 0x0014; //当窗口背景必须被擦除时(例在窗口改变大小时)

public const int WM_SYSCOLORCHANGE = 0x0015; //当系统颜色改变时,发送此消息给所有顶级窗口

public const int WM_ENDSESSION = 0x0016; // 当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,通知它对话是否结束

public const int WM_SYSTEMERROR = 0x0017; //

public const int WM_SHOWWINDOW = 0x0018; //当隐藏或显示窗口是发送此消息给这个窗口

public const int WM_ACTIVATEAPP = 0x001C; //发此消息给应用程序哪个窗口是激活的,哪个是非激活的;

public const int WM_FONTCHANGE = 0x001D; //当系统的字体资源库变化时发送此消息给所有顶级窗口

public const int WM_TIMECHANGE = 0x001E; //当系统的时间变化时发送此消息给所有顶级窗口

public const int WM_CANCELMODE = 0x001F; //发送此消息来取消某种正在进行的摸态(操作)

public const int WM_SETCURSOR = 0x0020; //如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口

public const int WM_MOUSEACTIVATE = 0x0021; //当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口

public const int WM_CHILDACTIVATE = 0x0022; //发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小

public const int WM_QUEUESYNC = 0x0023; //此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序分离出用户输入消息

public const int WM_GETMINMAXINFO = 0x0024; //此消息发送给窗口当它将要改变大小或位置;

public const int WM_PAINTICON = 0x0026; //发送给最小化窗口当它图标将要被重画

public const int WM_ICONERASEBKGND = 0x0027; //此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画public const int WM_NEXTDLGCTL = 0x0028; //发送此消息给一个对话框程序去更改焦点位置

public const int WM_SPOOLERSTATUS = 0x002A; //每当打印管理列队增加或减少一条作业时发出此消息

public const int WM_DRAWITEM = 0x002B; //当button,combobox,listbox,menu的可视外观改变时发送此消息给这些空件的所有者

public const int WM_MEASUREITEM = 0x002C; //当button, combo box, list box, list view control, or menu item 被创建时发送此消息给控件的所有者

public const int WM_DELETEITEM = 0x002D; // 当the list box 或combo box 被销毁或当某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息

public const int WM_VKEYTOITEM = 0x002E; //此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息

public const int WM_CHARTOITEM = 0x002F; //此消息由一

个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息

public const int WM_SETFONT = 0x0030; //当绘制文本时程序发送此消息得到控件要用的颜色

public const int WM_GETFONT = 0x0031; //应用程序发送此消息得到当前控件绘制文本的字体

public const int WM_SETHOTKEY = 0x0032; //应用程序发送此消息让一个窗口与一个热键相关连

public const int WM_GETHOTKEY = 0x0033; //应用程序发送此消息来判断热键与某个窗口是否有关联

public const int WM_QUERYDRAGICON = 0x0037; //此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能

//返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标

public const int WM_COMPAREITEM = 0x0039; //发送此消息来判定combobox或listbox新增加的项的相对位置

public const int WM_GETOBJECT = 0x003D; //WM_COMPACTING = 0x0041; //显示内存已经很少了

public const int WM_WINDOWPOSCHANGING = 0x0046; //发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数

public const int WM_WINDOWPOSCHANGED = 0x0047; //发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数

public const int WM_POWER = 0x0048; //(适用于16位的windows)当系统将要进入暂停状态时发送此消息

public const int WM_COPYDATA = 0x004A; //当一个应用程序传递数据给另一个应用程序时发送此消息

public const int WM_CANCELJOURNAL = 0x004B; //当某个用户取消程序日志激活状态,提交此消息给程序

public const int WM_NOTIFY = 0x004E; //当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口

public const int WM_INPUTLANGCHANGEREQUEST = 0x0050; //当用户选择某种输入语言,或输入语言的热键改变public const int WM_INPUTLANGCHANGE = 0x0051; //当平台现场已经被改变后发送此消息给受影响的最顶级窗口

public const int WM_TCARD = 0x0052; //当程序已经初始化windows帮助例程时发送此消息给应用程序

public const int WM_HELP = 0x0053; //此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就

//发送给有焦点的窗口,如果当前都没有焦点,就把此消息

发送给当前激活的窗口

public const int WM_USERCHANGED = 0x0054; //当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体

//设置信息,在用户更新设置时系统马上发送此消息;

public const int WM_NOTIFYformAT = 0x0055; //公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构

//在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信

public const int WM_CONTEXTMENU = 0x007B; //当用户某个窗口中点击了一下右键就发送此消息给这个窗口

public const int WM_styleCHANGING = 0x007C; //当调用SETWINDOWLONG函数将要改变一个或多个窗口的风格时发送此消息给那个窗口

public const int WM_styleCHANGED = 0x007D; //当调用SETWINDOWLONG函数一个或多个窗口的风格后发送此消息给那个窗口

public const int WM_DISPLAYCHANGE = 0x007E; //当显示器的分辨率改变后发送此消息给所有的窗口

public const int WM_GETICON = 0x007F; //此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;

public const int WM_SETICON = 0x0080; //程序发送此消息让一个新的大图标或小图标与某个窗口关联;

public const int WM_NCCREATE = 0x0081; //当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;

public const int WM_NCDESTROY = 0x0082; //此消息通知某个窗口,非客户区正在销毁

public const int WM_NCCALCSIZE = 0x0083; //当某个窗口的客户区域必须被核算时发送此消息

public const int WM_NCHITTEST = 0x0084; //移动鼠标,按住或释放鼠标时发生

public const int WM_NCPAINT = 0x0085; //程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;

public const int WM_NCACTIVATE = 0x0086; //此消息发送给某个窗口仅当它的非客户区需要被改变来显示是激活还是非激活状态;

public const int WM_GETDLGCODE = 0x0087; //发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件

//通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它

public const int WM_NCMOUSEMOVE = 0x00A0; //当光标在一个窗口的非客户区内移动时发送此消息给这个窗口//非客户区

为:窗体的标题栏及窗的边框体

public const int WM_NCLBUTTONDOWN = 0x00A1; //

//当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息

public const int WM_NCLBUTTONUP = 0x00A2; //当用户释放鼠标左键同时光标某个窗口在非客户区十发送此消息;

public const int WM_NCLBUTTONDBLCLK = 0x00A3; //当用户双击鼠标左键同时光标某个窗口在非客户区十发送此消息public const int WM_NCRBUTTONDOWN = 0x00A4; //当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息

public const int WM_NCRBUTTONUP = 0x00A5; //当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息

public const int WM_NCRBUTTONDBLCLK = 0x00A6; //当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息public const int WM_NCMBUTTONDOWN = 0x00A7; //当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息

public const int WM_NCMBUTTONUP = 0x00A8; //当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息

public const int WM_NCMBUTTONDBLCLK = 0x00A9; //当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息public const int WM_KEYFIRST = 0x0100; //

public const int WM_KEYDOWN = 0x0100; //按下一个键

public const int WM_KEYUP = 0x0101; //释放一个键

public const int WM_CHAR = 0x0102; //按下某键,并已发出WM_KEYDOWN,WM_KEYUP消息

public const int WM_DEADCHAR = 0x0103; //当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口

public const int WM_SYSKEYDOWN = 0x0104; //当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;

public const int WM_SYSKEYUP = 0x0105; //当用户释放一个键同时ALT 键还按着时提交此消息给拥有焦点的窗口

public const int WM_SYSCHAR = 0x0106; //当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口

public const int WM_SYSDEADCHAR = 0x0107; //当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口

public const int WM_KEYLAST = 0x0108; //

public const int WM_INITDIALOG = 0x0110; //在一个对话框程序被显示前发送此消息给它,通常用此消息初始化控件和执行其它任务

public const int WM_COMMAND = 0x0111; //当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键

被翻译

public const int WM_SYSCOMMAND = 0x0112; //当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息

public const int WM_TIMER = 0x0113; //发生了定时器事件

public const int WM_HSCROLL = 0x0114; //当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件

public const int WM_VSCROLL = 0x0115; //当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的控件WM_INITMENU = 0x0116; //

//当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许

//程序在显示前更改菜单

public const int WM_INITMENUPOPUP = 0x0117; //当一个下拉菜单或子菜单将要被激活时发送此消息,它允许程序在它显示前更改菜单,而不要

// 改变全部

public const int WM_MENUSELECT = 0x011F; //当用户选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)

public const int WM_MENUCHAR = 0x0120; //当菜单已被激活用户按下了某个键(不同于加速键),发送此消息给菜单的所有

者;

public const int WM_ENTERIDLE = 0x0121; //当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待

public const int WM_MENURBUTTONUP = 0x0122; //

public const int WM_MENUDRAG = 0x0123; //

public const int WM_MENUGETOBJECT = 0x0124; //

public const int WM_UNINITMENUPOPUP = 0x0125; //

public const int WM_MENUCOMMAND = 0x0126; //

public const int WM_CHANGEUISTATE = 0x0127; //

public const int WM_UPDATEUISTATE = 0x0128; //

public const int WM_QUERYUISTATE = 0x0129; //

public const int WM_CTLCOLORMSGBOX = 0x0132; //在windows绘制消息框前发送此消息给消息框的所有者窗口,通过响应这条消息,所有者窗口可以

//通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色

public const int WM_CTLCOLOREDIT = 0x0133; //当一个编辑型控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

//通过使用给定的相关显示设备的句柄来设置编辑框的文

本和背景颜色

public const int WM_CTLCOLORLISTBOX = 0x0134; //当一个列表框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

//通过使用给定的相关显示设备的句柄来设置列表框的文本和背景颜色

public const int WM_CTLCOLORBTN = 0x0135; //当一个按钮控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

//通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色

public const int WM_CTLCOLORDLG = 0x0136; //当一个对话框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

//通过使用给定的相关显示设备的句柄来设置对话框的文本背景颜色

public const int WM_CTLCOLORSCROLLBAR = 0x0137; //当一个滚动条控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

//通过使用给定的相关显示设备的句柄来设置滚动条的背景颜色

public const int WM_CTLCOLORSTATIC = 0x0138; //当一个

静态控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

//通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色

public const int WM_MOUSEFIRST = 0x0200; //

public const int WM_MOUSEMOVE = 0x0200; //移动鼠标

public const int WM_LBUTTONDOWN = 0x0201; //按下鼠标左键

public const int WM_LBUTTONUP = 0x0202; //释放鼠标左键

public const int WM_LBUTTONDBLCLK = 0x0203; //双击鼠标左键

public const int WM_RBUTTONDOWN = 0x0204; //按下鼠标右键

public const int WM_RBUTTONUP = 0x0205; //释放鼠标右键

public const int WM_RBUTTONDBLCLK = 0x0206; //双击鼠标右键

public const int WM_MBUTTONDOWN = 0x0207; //按下鼠标中键

public const int WM_MBUTTONUP = 0x0208; //释放鼠标中键

public const int WM_MBUTTONDBLCLK = 0x0209; //双击鼠标中键

public const int WM_MOUSEWHEEL = 0x020A; //当鼠标轮子转动时发送此消息个当前有焦点的控件

public const int WM_MOUSELAST = 0x020A; //

public const int WM_PARENTNOTIFY = 0x0210; //当MDI子窗口被创建或被销毁,或用户按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口

public const int WM_ENTERMENULOOP = 0x0211; //发送此消息通知应用程序的主窗口that已经进入了菜单循环模式

public const int WM_EXITMENULOOP = 0x0212; //发送此消息通知应用程序的主窗口that已退出了菜单循环模式

public const int WM_NEXTMENU = 0x0213; //

public const int WM_SIZING = 532; //当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置

//也可以修改他们

public const int WM_CAPTURECHANGED = 533; //发送此消息给窗口当它失去捕获的鼠标时;

public const int WM_MOVING = 534; //当用户在移动窗口时发送此消息,通过此消息应用程序可以监视窗口大小和位置//也可以修改他们;

public const int WM_POWERBROADCAST = 536; //此消息发送给应用程序来通知它有关电源管理事件;

public const int WM_DEVICECHANGE = 537; //当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序

public const int WM_IME_STARTCOMPOSITION = 0x010D; //

public const int WM_IME_ENDCOMPOSITION = 0x010E; //

public const int WM_IME_COMPOSITION = 0x010F; //

public const int WM_IME_KEYLAST = 0x010F; //

public const int WM_IME_SETCONTEXT = 0x0281; //

public const int WM_IME_NOTIFY = 0x0282; //

public const int WM_IME_CONTROL = 0x0283; //

public const int WM_IME_COMPOSITIONFULL = 0x0284; //

public const int WM_IME_SELECT = 0x0285; //

public const int WM_IME_CHAR = 0x0286; //

public const int WM_IME_REQUEST = 0x0288; //

public const int WM_IME_KEYDOWN = 0x0290; //

public const int WM_IME_KEYUP = 0x0291; //

public const int WM_MDICREATE = 0x0220; //应用程序发送此消息给多文档的客户窗口来创建一个MDI 子窗口

public const int WM_MDIDESTROY = 0x0221; //应用程序发送此消息给多文档的客户窗口来关闭一个MDI 子窗口

public const int WM_MDIACTIVATE = 0x0222; //应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到

//此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它;

public const int WM_MDIRESTORE = 0x0223; //程序发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小public const int WM_MDINEXT = 0x0224; //程序发送此消息给MDI客户窗口激活下一个或前一个窗口

public const int WM_MDIMAXIMIZE = 0x0225; //程序发送此消息给MDI客户窗口来最大化一个MDI子窗口;

public const int WM_MDITILE = 0x0226; //程序发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口

public const int WM_MDICASCADE = 0x0227; //程序发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口

public const int WM_MDIICONARRANGE = 0x0228; //程序发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口public const int WM_MDIGETACTIVE = 0x0229; //程序发送此消息给MDI客户窗口来找到激活的子窗口的句柄

public const int WM_MDISETMENU = 0x0230; //程序发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单

public const int WM_ENTERSIZEMOVE = 0x0231; //

public const int WM_EXITSIZEMOVE = 0x0232; //

public const int WM_DROPFILES = 0x0233; //

public const int WM_MDIREFRESHMENU = 0x0234; //

public const int WM_MOUSEHOVER = 0x02A1; //

public const int WM_MOUSELEAVE = 0x02A3; //

public const int WM_CUT = 0x0300; //程序发送此消息给一个编辑框或combobox来删除当前选择的文本

public const int WM_COPY = 0x0301; //程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板

public const int WM_PASTE = 0x0302; //程序发送此消息给editcontrol或combobox从剪贴板中得到数据

public const int WM_CLEAR = 0x0303; //程序发送此消息给editcontrol或combobox清除当前选择的内容;

public const int WM_UNDO = 0x0304; //程序发送此消息给editcontrol或combobox撤消最后一次操作

public const int WM_RENDERformAT = 0x0305; //

public const int WM_RENDERALLformATS = 0x0306; //

public const int WM_DESTROYCLIPBOARD = 0x0307; //当调用ENPTYCLIPBOARD函数时发送此消息给剪贴板的所有者public const int WM_DRAWCLIPBOARD = 0x0308; //当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来

//显示剪贴板的新内容;

public const int WM_PAINTCLIPBOARD = 0x0309; //当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画;

public const int WM_VSCROLLCLIPBOARD = 0x030A; //

public const int WM_SIZECLIPBOARD = 0x030B; //当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者;

public const int WM_ASKCBformATNAME = 0x030C; //通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字

public const int WM_CHANGECBCHAIN = 0x030D; //当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口;

public const int WM_HSCROLLCLIPBOARD = 0x030E; //

//此消息通过一个剪贴板观察窗口发送给剪贴板的所有者;它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值;

public const int WM_QUERYNEWPALETTE = 0x030F; //此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时

《.NET-WinForm编程》课程设计-模板

《.NET WinForm编程》课程设计题目:智能QA系统的设计与实现 学院/ 系软件学院 专业信息管理与信息系统专业(日英强化)年级 2009级 学号 00988**** 作者姓名 **** 2012年 7月 5日

本次课程设计题目为智能QA系统的设计与实现,首先介绍了QA技术的现状,然后提出一个基于QA的数字信息化领域的架构,并对相关关键技术进行了讨论,最后说明了QA在数字信息化领域的应用前景。 本系统由三个模块组成,QA管理模块、答案管理模块和信息查询模块。QA管理模块包括信息的新增,修改,删除。答案管理模块实现了答案的基本操作,信息查询模块要求在输入查询条件后,会根据一定的逻辑输出答案。由于各模块的分开及进入系统前验证用户身份,也加强了各种信息的安全性及保密性。 根据系统所需功能,决定以Windows XP为开发平台,采用SQL Server 2005做后台数据库,选择功能强大的Visual Studio 2008为开发工具,利用软件工程思想和方法,总体上用结构化生命周期法进行系统分析和设计,采用快速原型法来实现,系统本系统界面友好,与目前市场上的主流游戏软件大体一致,而且操作更加简单,使用方式和微软各种软件(Windows、Office)基本相同,减少了用户学习、使用本游戏系统的额外负担。本文通过系统概述、系统分析、系统设计、系统实施、开发总结五章,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结。 该系统使用了功能强大的.NET WinForm开发技术,使用了基于MVC机制的三层架构。操作方便,可维护性强。经过大量的测试,基本符合用户需求。 关键字:智能OA;信息查询;三层架构;C#

实验1:WinForm程序设计

实验一:WinForm程序设计 实验名称:WINFORM程序设计学时安排: 2课时实验类别:验证型、设计型实验要求:1人1组 一、实验目的和任务 1.掌握创建WinForms应用程序的步骤 2.熟悉WinForms应用程序的控件 二、注意事项和要求 1.第一部分必须要完成,第二部分尽量完成,第三部分供有余力的同学完成; 2.完成后上传项目压缩文件到ftp服务器指定目录,压缩文件名称:学号(后两位)-姓名。 三、实验内容和步骤 1.第一部分:跟着老师练习 1)创建一个名为AppSum的WinForms应用程序,要求用户在文本框中输入2个数字, 然后求2数之和。效果如下图所示: 2.第二部分:自己思考练习 1)创建一个Windows窗体应用程序,允许用户从给定的颜色和字体列表中选择颜色、字 体等设置。用户还可以通过将标准颜色用作基本颜色来创建自定义颜色,并使用滚动 条来增大/减小红色、蓝色和绿色的渐变。选定的颜色应适用于窗体界面。选定的字体 中应显示一个文本示例。效果如下图所示:

2)具体步骤: 新建一个名为AppSettings的Winforms应用程序项目,并将主窗体重命名为FrmSettings。 拖动一个TabControl控件到窗体上,name属性改为tagSettings;选择tagSettings 控件的TabPages属性并单击右边的“…”按钮;出现“TabPage集合编辑器”对 话框。添加两个选项卡页,并将其分别命名为tabColor和tabFont,对应的Text 属性设置为“颜色”和“字体”。 拖动工具箱中的控件来设计窗体,颜色标签页对应的窗体如下:

WinForm界面布局

WinForm界面布局 Dock&Anchor Dock和Anchor是水火不容的,同时给控件设置Dock和Anchor属性时后设置的会覆盖前面的设置。 Dock 我初接触WinForm的时候发现控件的Width和Height只能是int,不能设置为百分比,那个时候就想子控件如何跟着父控件而变化呢?父控件变大就变大,而且还填满那个区域。甚至以为这个需要通过代码来解决,如是在SizeChanged事件里…… 后来才发现我要的就是Dock给的,Dock是停靠的意思。Dock属性的类型是DockStyle枚举: 1:public enum DockStyle 2:{ 3:None=0, 4:Top=1, 5:Bottom=2, 6:Left=3, 7:Right=4, 8:Fill=5 9:} 默认是None,当为Left的时,就表示子控件停靠在父控件的左边区域,并把左区域填充满: 上图中的Panel总是会停靠在Form的左边区域,不管如何调整Form的高度,它总是能把左边区域填满。Dock麻烦的地方在于多个控件碰到一起时,比如有两个Panel都设置为Left 该怎么办?我们会发现向父控件的Controls集合中添加子控件,越晚添加具有更高的“优先级”(不知道有没有这个说法,这是我杜撰的)。这里的优先级指的是,子控件“优先级”越高,

越靠近父控件边缘,其他子控件就得避让: [我的见解;通过选中控件,一般是pannel,右键选择置为底层,来决定控件间的优先级] this.Controls.Add(this.panel1); this.Controls.Add(this.panel2); Panel2后添加进去,所以它具有更高的优先级,更靠近Form的边缘。这个规则不仅仅对于Dock都设为Left的有效,对Dock属性不同,但是碰到一起的子控件也适用: 1:this.panel1.Dock=DockStyle.Left; 2:this.panel2.Dock=DockStyle.Left; 3:this.panel3.Dock=DockStyle.Top; 4: 5:this.Controls.Add(this.panel1); 6:this.Controls.Add(this.panel2); 7:this.Controls.Add(this.panel3); panel3的Dock设置为Top,最后添加到Controls集合中,所以具有最高的优先级,其他两个panel都得避让:

winform界面设计规范

winform界面设计规范 Winform开发一般遵循的原则 窗体类 型 ..................................................................... .............. 2 尺寸比 例 ..................................................................... .............. 3 窗体控件元 素 ..................................................................... ..... 3 Tab键次 序 ..................................................................... ........... 5 快捷 键 ..................................................................... ................... 5 右键菜 单 ..................................................................... .............. 5 区域排 列 ..................................................................... .............. 6 UI开发异常处理..................................................................... 6 执行动作要提 示 ..................................................................... 7 文字表 达 .....................................................................

C#登录界面设计教案

课题:登录界面窗体设计 一、教材分析 《C#程序设计基础教程》第六章的form2登录界面窗体设计里,介绍了登录界面的制作过程。本课强调学生对于C#语言的理解能力以及窗体设计的实际操作能力。按照新课改的教学理念,要注意培养学生的信息素养,培养学生不断探索新知识的能力,所以本课重在培养学生通过已有知识的掌握,自己主动去解决新的问题,只有具备这种能力,才能不断的去探究去创新。在内容上,本课是把前面学习C#程序设计语言实际运用到窗体的触发事件的代码设计中,是对前面所学语言的灵活运用,是前面知识的拓展和延伸;同时对于窗体的各个控件的学习,也为下面更复杂的窗体设计作了一个很好的铺垫,起到承上启下的作用。 二、学情分析 本课的授课对象是五年制大专电子商务专业四年级的学生,他们已经具备了一定的信息素养和动手能力,本学期学生同时还上了另外一门网页制作的课程,网页制作里涉及到一些控件的使用跟本课知识点有些类似,所以学生已经掌握了一些控件的使用方法以及属性的设置方法,对于窗体的简单设计已经有一定基础。但是作为非计算机专业学生,对于控件的触发事件的代码编写还是有不少困难的,所以本课降低难度,学生只要理解相关代码,并进行运用即可,不要求学生一定要自己编写代码,学有余力的同学可以尝试独立编写代码,所以可以进行分层教学,体现了新课标里的让所有的学生都参与到学习中来! 三、教学目标 1、知识与技能 a.掌握Form窗体、Button按钮、Text文本框和Label标签的创建和设置方法以及它们 相关属性的设置方法。 b.掌握Button按钮的Click单击事件的触发方式,并能够理解相关触发事件的代码设计。 c.初步掌握利用各类窗控件制作出简单的窗体设计作品。 2、过程与方法 a.通过教师的知识点讲解以及学生的自主探究和合作学习,使学生掌握新的知识点。 b.通过学生亲手动手实践,自主探索,使学生基本掌握简单窗体设计的方法。 c.采用任务驱动、自主学习、探究学习、合作学习等教学方法,让学生观察、思考、交 流,培养学生自主学习、合作探究的能力。 3、情感态度与价值观

WinForm UI设计与开发思路

WinForm UI 设计与开发思路 最近一年来一直在做WinForm 相关的系统,对WinForm 的UI 设计有一些想法想和大家讨论(主要是比较忙,所以很多只是设想,还没有开发实例) 关于WinUI ,理想的情形应该是外观比较cool ,能给用户良好的使用体验和印象,同时又兼顾功能强大和容易开发。但基于传统的.NET WindowsForms ,恐怕除了容易开发,在其他方面的指标都很普通了。如果为了界面和功能,则复杂度会提高很多,用大量的GDI+和API 操作,相信会让很多人头痛不已。 以下是一些思路: Custom Control 写代码定制控件 Shell Style 利用Shell Style 工具 Flash Control 利用Flash 控件 Html Control 利用Html 控件 编程来实现各种样式的控件,这个是大家比较熟悉和常用的方法,也是上面提到过的。我们现在集中来讲解一下后面三种。 Windows Shell Style 不知道大家在厌倦了Windows 默认的窗体和菜单后,是不是用过一些改变Windows 外观的软件,例如StarDock 公司的很多产品(WindowBlinds 总知道吧)以及TGTSoft 的StyleXP 。

轻松改变Windows程序的外观 事实上微软在Win2000,XP,2003系统上均引入了Visual Style的概念,也就是系统外观主题。它提供了一些API,可以方便地修改Windows窗体和控件的整体外观呈现。所以我们一般在改变Windows的主题后,一般大部分程序的按钮、形状都会跟着改变(在.NET中可能需要将控件的FlatStyle设成System并且EnableVisualStyles()才会有效) 这里要提的是TGTSoft的StyleXP工具,它基于Windows Visual Style架构,同时又有自己的API,此外,它还有其他一些优点,比如它的每种外观样式,全部打包在一个DLL文件中,同时还有相应的工具(StyleBuilder)来制作这些样式DLL。 在安装完StyleXP后,我们可以在"C:\WINDOWS\Resources\Themes\主题名称 \shell"目录中找到该主题的DLL文件。 StyleBuilder让你定制自己的Windows外观 有了这些基础,我们就可以在我们的程序中利用ShellStyle的API来应用这些外观样

winform界面设计规范

Winform开发一般遵循的原则 窗体类型 (2) 尺寸比例 (3) 窗体控件元素 (3) Tab键次序 (5) 快捷键 (5) 右键菜单 (5) 区域排列 (6) UI开发异常处理 (6) 执行动作要提示 (7) 文字表达 (7) 颜色使用恰当,遵循对比原则 (8)

窗体类型 我们把UI理解成窗体以及窗体上用户的交互规则。窗体主要包括主界面类型和对话框类型两种。 主界面指应用程序启动后最主要的界面,其生命周期一般与应用程序保持一致。通过菜单或按钮的形式调用其它子界面和执行功能。一般由以下几个部分组成。标题栏,菜单栏,工具栏,目录栏,工作区,信息输出区(栏)。此外很多应用程序中又增加一些漂浮的子窗体以面板的形式附加到主界面中。

对话框一般指应用程序中具有返回结果的窗体。一般表现为模态窗体,包括信息展现部分,信息输入部分和结果选择按钮三部分组成。此外,UI部分除了主窗体和对话框外还有浮动窗体,托盘菜单等方式与 用户交互。 尺寸比例 主窗体尺寸一般在运行期默认最大化,否则遵循纵横比为4:3,16:9为益。对话框除了和主窗体一样的原则外也有3:4(4:3旋转90度)的纵横比,总之窗体的尺寸只要保证纵横比屏幕一致。 当窗体元素太少,比如只有一个文本标签时,可以不遵循该原则,因为保证窗体尺寸纵横比之前首先要确定窗体不能有大范围的空白区域。 窗体控件元素 主窗体一般按菜单栏,工具栏等组成部分分为上中下左右五个分布区(TOP,Client,Bottom,Left, Right,),根据实际需求可能舍去某些分布区。分布区一般由Split Panel控件分隔,这样可以使用户自行调节各个分布区的尺寸大小。注意处在不同分布区控件的Anchor属性,保证当窗体尺寸因鼠标拖动改变时控件尺寸按照分布原则变化。 下表为控件在不同分布区的Achor属性值。

Winform设计界面规则(与大家共享)

一份界面规范(c/s),和大家共享(摘录) Posted on 2006-07-04 09:33 东人EP阅读(158) 评论(0)编辑收藏引用所属分类: .NET 在参考了很多资料后,整理出来的一份界面规范(是c/s程序的,但其中的原则部分对任何界面都是具有参考价值的),希望能给大家带来帮助。 其中的图片没有贴上来,因为文字已经足够描述清楚了。 ------------------------------------- 1. 界面规范 1.1. 总体原则 l 以用户为中心。设计由用户控制的界面,而不是界面控制用户。 l 清楚一致的设计。所有界面的风格保持一致,所有具有相同含义的术语保持一致,且易于理解 l 拥有良好的直觉特征。以用户所熟悉的现实世界事务的抽象来给用户暗示和隐喻,来帮助用户能迅速学会软件的使用。 l 较快的响应速度。 l 简单且美观。 1.2. 原则详述 1.2.1. 用户控制 用户界面设计的一个重要原则是用户应该总是感觉在控制软件而不是感觉被软件所控制。 l 操作上假设是用户--而不是计算机或软件--开始动作。用户扮演主动角色,而不是扮演被动角色。在需要自动执行任务时,要以允许用户进行选择或控制它的方式来实现该自动任务。l 提供用户自定义设置。因为用户的技能和喜好各不相同,因此他们必须能够个性化界面的某些方面。Windows为用户提供了对许多这方面的访问。您的软件应该反应不同的系统属性--例如颜色、字体或其他选项的用户设置。 l 采取交互式和易于感应的窗口,尽量避免使用模态对话框,而使用"非模式"辅助窗口。"模式"是一种状态,它排除一般的交互,或者限制用户只能进行特定的交互。当最好使用一个模式或该模式只是可替换的设计时--例如,用于在一个绘图程序中选定一个特定感觉-- 请确保该模式是显然的、可见的,是一个明确的用户选定的结果,并且容易取消。 l 在后台运行长进程时,保持前台式交互。例如,当正在打印一个文档,即使该文档不能被改变,用户也应该可以最小化该窗口。 l 谅解。用户喜欢探索一个界面,并经常从尝试和错误中学习。一个有效的界面允许交互式

winform界面风格规范-v1.1

界面设计规范

1.引言 1.1 设计说明 本文档是对系统界面设计风格进行描述,而和用户交互的最终界面将会中项目《详细设计说明书》中设计和解释。 1.2 概念和定义 1. 用户界面 又称人机界面,实现用户与计算机之间的通信,以控制计算机或进行用户和计算机之间得数据传送的系统部件。 2. GUI 即图形用户界面,一种可视化得用户界面,它使用图形界面代替文本界面。 开发人员必须选择仔细选择窗体,并且要理解为什么比其他形式的窗体更适用。 3. 主要窗体(Primary Windows) 主要窗体包含了一个应用程序的大部分功能,大多时候它是一个单独的窗体,但在一个MDI风格的应用程序中,父窗体和子窗体都被认为是主要窗体。 1) Single Document Interface (SDI) 一个单独的主要窗体通常包含一个菜单栏、工具栏和状态栏,打开此窗体时应该运 行在当前所有窗体的上面,并且在任务栏提供显示,就像记事本和写字板程序。 2) Multiple Document Interface (MDI) 通常适合有多个任务,或同时管理所有的窗口。例如Microsoft Word,Excel和V isual Basic。 3) Split Document Interface (split SDI或Explorer) 是一个分隔的主要窗体,通常包括菜单栏、工具栏和状态栏。例如资源管理器和 Outlook。 4. 次要窗体(Secondary Windows) 一个次要窗体通常用于为主要窗体提供补充信息和交互作用,界面比较简单。 1) Modal dialog boxes(模态对话框) 2) Modeless dialog boxes(非模态对话框) 3) Property sheet 1.3 用户假定

[https://www.360docs.net/doc/056294710.html,教程]Winform开发中常见界面的DevExpress处理操作

[https://www.360docs.net/doc/056294710.html,教程]Winform开发中常见界面的DevExpress处理操 作 我们在开发Winform程序的时候,需要经常性的对界面的一些控件进行初始化,或者经常简单的封装,以方便我们在界面设计过程中反复使用。本文主要介绍在我的一些项目中经常性的界面处理操作和代码,以便为大家开发的时候提供必要的参考。 1、选择用户的控件封装操作 在一些系统模块里面,我们需要选择系统人员作为经办人员的操作,如下面几个界面场景所示。 我们注意到,一般在我们选择的时候,界面会弹出一个新的层给我们选择,里面通过列表详细展示相关的信息,还可以支持搜索,非常方便。 当我们完成选择的时候,我们看到界面会只有一个人员名称的显示,不占用额外的地方显示。 这种界面效果是如何实现的呢?下面进行详细的介绍。 1)首先我们定义一个自定义控件,让其继承自XtraUserControl 即可。/// <summary> /// 经办人员、

操作人员的选择控件封装/// </summary> public partial class OperatorSelectControl : XtraUserControl { 2)然后在DevExpress的界面工具箱上拖动一个SearchLookUpEdit 控件到我们新的用户控件OperatorSelectControl 上。 调整好用户界面控件的排版相关属性,就会得到下面的界面所示。 3)在设计视图里面,我们为这个SearchLookUpEdit控件的GridView设置它的显示字段,如下所示,每个字段主要绑定FieldName(属性或者字段)和Caption(显示名称)。 这些必备的处理操作完成后,我们可以通过代码或者设计器把这个控件的显示内容和存储内容进行设定,并绑定它的数据源即可(根据需要调用自己的函数),如下所示。private void OperatorSelectControl_Load(object sender, EventArgs e) { if (!this.DesignMode) { txtOperator.Properties.ValueMember = "ID"; txtOperator.Properties.DisplayMember = "FullName"; txtOperator.Properties.DataSource =

WinForm UI设计与开发思路

WinForm UI设计与开发思路 最近一年来一直在做WinForm相关的系统,对WinForm的UI设计有一些想法想和大家讨论(主要是比较忙,所以很多只是设想,还没有开发实例) 关于WinUI,理想的情形应该是外观比较cool,能给用户良好的使用体验和印象,同时又兼顾功能强大和容易开发。但基于传统的.NET WindowsForms,恐怕除了容易开发,在其他方面的指标都很普通了。如果为了界面和功能,则复杂度会提高很多,用大量的GDI+和API 操作,相信会让很多人头痛不已。 以下是一些思路: 编程来实现各种样式的控件,这个是大家比较熟悉和常用的方法,也是上面提到过的。我们现在集中来讲解一下后面三种。 Windows Shell Style 不知道大家在厌倦了Windows默认的窗体和菜单后,是不是用过一些改变Windows外观的软件,例如StarDock公司的很多产品(WindowBlinds总知道吧)以及TGTSoft的StyleXP。

事实上微软在Win2000,XP,2003系统上均引入了Visual Style的概念,也就是系统外观主题。它提供了一些API,可以方便地修改Windows窗体和控件的整体外观呈现。所以我们一般在改变Windows的主题后,一般大部分程序的按钮、形状都会跟着改变(在.NET中可能需要将控件的FlatStyle设成System并且EnableVisualStyles()才会有效) 这里要提的是TGTSoft的StyleXP工具,它基于Windows Visual Style架构,同时又有自己的API,此外,它还有其他一些优点,比如它的每种外观样式,全部打包在一个DLL文件中,同时还有相应的工具(StyleBuilder)来制作这些样式DLL。 在安装完StyleXP后,我们可以在"C:\WINDOWS\Resources\Themes\主题名称 \shell"目录中找到该主题的DLL文件。 有了这些基础,我们就可以在我们的程序中利用ShellStyle的API来应用这些外观样式,通过加载不同的资源DLL,就可以轻松改变软件的外观。当然这种方式中,你所使用的控件还是传统的Windows控件,所以还是有一定局限性。 至于如何利用ShellStyle的API,CodeProject上有一个不错的例子:Themed Windows XP style Explorer Bar Flash Control 我们知道Flash的出现和广泛流行都是由于Web环境,但Flash发展到今天,其功能已不

WinForm界面排版

界面的排版往往决定你的版面可观度,在一年的工作中总结出了一点自己的经验,不知道别人怎么样弄的,反正这是我原创,希望能够对大家有所帮助。 效果预览: 1、新建Form后放一个容器,可以统一选择GroupBox或者Panel,因为Form要停靠在MDI主窗口上,所以我觉得用GroupBox比价好一点。将GroupBox锚定(ancor)为上下左右。 2、查询条件放在上面,选择一个Panel,命名为pnlTop,Panel锚定为左右上,这样就可以在Panel里面放查询控件。 3、下面放一个Panel,命名为pnlBottom,这个Panel锚定为上下左右。 4、在pnlBttom里面上面放一个Panel,命名为pnlBottomTop,锚定为上下左右,在pnlBottomTop里面放GridView,将它锚定为上下左右。 5、在下面放一个Panel,命名为pnlBottomBottom,将它锚定为下左右,在里面放分页控件,将其锚定为左上。 6、在最上Panel中靠左的控件左上锚定,靠右边的右上锚定,在下层Panel中靠左边的控件锚定为左上,靠右边的锚定为右上。

上面的是两层结构,如果是三层的话则最上层锚定为上左右,中间锚定为左右上下,最下层锚定为下左右。命名的话pnlTop,pnlMiddle,pnlBottom,有多层嵌套的话则类推。 panel与panel之间的距离容易产生1-2个px的偏差,则进行多页面切换时容易产生抖动,很难看的。 解决的办法 一:设定panel的location 二:通过上下左右键调整panel的location,通过shift+上下左右键可以调整panel的size。希望对大家有用。

Winform开发框架主界面设计展示

Winform开发框架主界面设计展示 做了好多年Winform的程序的开发,主窗口的界面设计一般都要求做的更好一些,可以根据不同的系统功能模块进行归类整合,能使客户迅速寻找到相关功能的同时,也能感觉到整体性的美观大方,因此主窗口的界面设计总是会精益求精,力求做到更好用、更美观,这样才能吸引客户使用。目前的主体界面设计,可以使用很多控件进行美化,这样能使得开发者能够迅速开发好美观的界面,也可以使得界面总体性有一个统一、规范的基准。一般推荐使用DevExpress 或者DotNetbar这两款界面控件套件,他们都能设计出类似Office的Ribbon界面,这种界面整体感觉会比较好一些。1、标准的DevExpress样式界面 在我的Winform开发框架中,也分为了传统性界面、DotNetBar样式界面、DevExpress样式界面这三种,根据不同的开发场景进行使用,如果是历史性原因导致,那就根据需要选择,如果是新的程序开发,那么建议采用DevExpress 样式的界面,这种界面样式,经过我这几年的开发应用了解,觉得真的非常棒,非常强大,基于Dev样式的《Winform开发框架》主体界面设计如下所示。 这个主体界面是Ribbon样式的界面,它分为了几个部分,我

从顶部开始到下面进行介绍。 1)、顶部样式选择 DevExpress控件可以将窗体的空间运用到极致,很多细微的地方都可以用起来。在开发的应用程序中,增加这个样式选择,也会使客户觉得这个程序开发也是非常专业的(^_^)。 2)、主程序菜单 在Ribbon样式中,添加这种样式的主程序菜单,比增加一个顶部的MenuBar来的好看,这也是标准的Office程序的Ribbon样式菜单,我们可以在里面添加各种层级的菜单,如下面是一个简单的退出和重登录菜单。 3)、主界面帮助小按钮 主界面的右边可以放置一些小按钮,如在程序中放置一个帮助小按钮,用来给客户提供帮助或者技术支持的网址链接,都是不错的选择。 4)、Ribbon样式分组按钮 在我的Winform开发框架中,通过图文并茂的功能按钮,可

WinForm界面设计规范

Chip系统规范 界面设计-WinForm(V1.0) 1.总原则 Chip系统界面设计,需要遵循以下原则: 1,一致:命名的一致、大小的一致、操作的一致、逻辑的一致; 2,简约:用简单、向导性、无歧义的文字表示系统的意图; 2.按钮(Button) 1,功能按钮的摆放要将关联性高的摆放在一起,如: 2,任何界面的“退出”操作要摆放在最右侧,下面是不符合逻辑的图例: 3,功能按钮的名称要统一,如查询条件之后的搜索按钮,统一命名“查询”,而不是“搜索”。 4,相同操作的功能按钮,在不同的界面中要有一致的命名、大小、颜色、背景、快捷键等。5,表示新增操作的功能按钮,其文本内容都要是“新建”,代码的命名中要带有New。6,表示编辑操作的功能按钮,其文本内容都要是“编辑”,代码的命名中要带有Edit。 7,表示删除操作的功能按钮,其文本内容都要是“删除”,代码的命名中要带有Del。 8,表示保存操作的功能按钮,其文本内容都要是“保存”,代码的命名中要带有Save。9,表示确认操作的功能按钮,其文本内容都要是“确定”,代码的命名中要带有OK。 3.列表(DataGird或DataGridView) 1,列表的列头要将关联性高的摆放在一起,正确的格式如: 2,列表要有明确的默认排序,如一般按照操作时间倒序,很少有程序要求是按照操作时间升序排列。 3,列头不换行。 4,列头的宽度要根据列的内容自定义,一般情况下,列头的宽度要略宽于单元格平均的宽度,如果列头的文字内容多于单元格,则列宽要超过列头所有文字再加两个汉字宽度。

不可以所有的单元格的内容都紧紧的依靠单元格的分割线,正确的格式如: 不正确的格式如: 5,如果所有列宽小于列表的宽度,列头的最后一列就要撑满整个列头,如: 6,在不同界面中,表达同一业务概念的列头或者文字标签或者文字内容,要有一致的命名,比如所有表述房间类型的地方都叫“房型”。一定不可以出现的情况是,在列表界面中的查询条件中出现的输入框的文字标签内容和查询结果列表中的列头名称不同。 7,任何列表,都应该被一个GroupBox包围,该GroupBox的文本内容要能简约地表示列表的内容,如: 8,默认情况下,列表都是要考虑分页,分页要用系统默认的分页组件,如上图。 9,在客户端中,所有列表的背景都用Info颜色,不要使用系统默认的灰黑色。 10,在查找不到结果时,列表内容以及分页显示数据都要复原或清空。 4.文本输入框和文字标签(TextBox和Label) 1,任何有文本输入框的地方,一定要考虑文本输入框的格式,也一定要校验用户输入的内容,需要校验的是:是否必须输入、长度是否符合约定、内容是否符合格式要求。 2,任何文本输入框的前面,都要摆放一个文字标签,用来概括后面跟着的文本输入框的内容,文字标签中文字的内容后面要有1个英文的冒号,该冒号与文本输入框之间要有2

C# winform 登录界面

17L,长见识了,我还没看到过这样写登陆界面的呵呵,谢谢。 form2 f2=new form2(); f2.show(); this.Close 一般这样写的,会把整个程序关闭,原因是因为Form1拥有Main的UI线程,所以关闭导致整个程序关闭。 一般写登陆简单的是 form2 f2=new form2(); f2.show(); this.Hide(); 就是把它隐藏了。但是要记住,当你MainForm关闭的时候不能this.Close()来关闭程序。 应该Application .Exit ()来退出,因为前者没有关闭UI线程,也就是主线程。

贴出我的写法 private void FormStart()//声明一个发开Form2的方法 { Application.Run(new Form2());//运行1个新的程序窗口 } private void button1_Click(object sender, EventArgs e)//form1的按钮点击事件 { Thread thread = new Thread(new ThreadStart(FormStart));//这里可能有人看不懂,ThreadStart方法参数是上面那个方法名,对方法被作为参数了,如果你看过委托就会了,当然这里不是讨论委托。 thread.Start();//定义1个线程;执行FormsStrat函数; this.Close(); } 用到了线程来写。添加引用using System.Threading;就这么简单。很多人不会做系统重新登陆,用这个方法也可以做的。

用C#制作 个性化窗体 winform 界面

引言: 谁都希望自己的应用程序能让人留下一个深刻的印象,让自己的程序窗体有一件与众不同的"外衣"是一个好办法。试想:在一大堆的普通窗口中突然跳出一个很酷的界面,一定能让人眼睛一亮进而产生兴趣的。在VB,VC中如何定制可伸缩个性化窗口早就不是什么秘密了,已经有了大量相关的文章进行介绍,无非都是如何调用系统API之类的方法,但是在.Net中调用API却相对比较麻烦,所以使用.Net制作个性化窗体的文章也有一些,一般都是使用透明背景加图片的方式,所以不能移动或者不能任意放大缩小窗体。那有没有不需要调用系统API的方法来实现可伸缩的个性化窗体的办法呢?当然有,.Net Framework提供了一套非常强大的系统类库,我们下面就要做一个使用"纯".Net打造的可伸缩个性化窗体。 我们需要将窗体所有的"皮肤"全部换成我们自己定义的,包括标题栏,边框和系统按纽等,所以我们首先需要定做一套自己的皮肤图形文件。因为窗体是可伸缩的,所以我们不能简单的取一整幅图片来作为窗体皮肤,而是根据需要先将图片切割为不同的部分,一般来说,有以下图示几大部分(红线为切割线): 根据方位,将图片各部分命名为:Bottom_Left,Bottom_Middle,Bottom_Right,Middle_Left,Middle_Right,Top_Left,Top_Middle,Top_Right,SysButton_Min,SysButton_Max,SysButton_Close,SysButton_Restore等。注意,有些图片是可以伸缩的地方,比如Middle_Left,Bottom_Middle等处的图片可以只是一小块,以后需要进行重复贴图。而有些固定大小的图片,比如Bottom_Left,Top_Left等以后只用贴一次,实际应用的时候要注意区分。 采用以上原则,你便可以制作皮肤图片,图示如下:

WinForm界面开发之“分页控件”

WinForm界面开发之“分页控件” 在程序中,分页总是永远的话题,因为数据总是很多很多,分页展示在程序性能和数据查看感官方面得到很好的平衡,是一种良好的编程习惯和UI设计。 Winform中的分页控件可能没有https://www.360docs.net/doc/056294710.html,世界中的分页控件那么丰富多彩,不过也有不少的分页控件可以采用,各个人的可能都有一些不同的东西,一些好的东西。就我而言,我希望控件能够尽可能的多一些功能,耦合性低一些,例如我不想是基于存储过程的,因为我很多程序需要使用Access作为数据库,一般来说,我还希望有导出Excel数据的功能,还有打印预览功能,由于我的数据源表头,如实体类集合、表格内容绑定的时候,表头是英文的,我需要变为中文的,其他的功能有则更好。本篇介绍我在我的共享软件中大量使用的分页控件,如送水管理系统软件、病人资料管理软件等等,希望大家有兴趣的话,可以一起讨论使用该分页控件。以便整理吸收更多好的特性,共同学习。 先给大家一个总体感觉,这是我在送水软件中的界面展示,红色圈圈部分是分页控件的展示界面。

大家可以看到,除了基本的分页外,还有其他功能,如导出当前页、导出全部页、打印列表、以及相关功能操作的菜单(只要实现了相关的接口,则呈现相同的菜单,另外还有一些小地方,也是很常用关键的地方,就是间隔行的颜色变化,表头的中文化,行提示内容等等,我认为这些分页控件应该做的,特别是表头中文化部分很重要,因为这个分页控件的数据源是基于一般的对象集合(如List())或者DataTable的,因此数据源的表头可能是英文的(一般都是^_^)。

导出Excel是基本的功能,本控件支持当前页导出,全部页导出两种模式,导出的Excel 数据也还是比较好看的,不是一般的格式哦。 控件另外一项功能,也是集实用功能之所成,打印当前列表内容,如下图所示,该内容会保存用户在每个列表数据中的信息,打印不同的表头内容,如下图所示。

相关文档
最新文档