关键代码说明:一、用到的消息
fprivateco
sti
tWM_NCLBUTTONDBLCLK0x00A3privatei
t_i
tI
fo1消息回传值privateco
sti
tHTLEFT10privateco
sti
tHTRIGHT11privateco
sti
tHTTOP12privateco
sti
tHTTOPLEFT13privateco
sti
tHTTOPRIGHT14privateco
sti
tHTBOTTOM15privateco
sti
tHTBOTTOMLEFT0x10privateco
sti
tHTBOTTOMRIGHT17privateco
sti
tWM_NCHITTEST0x84privateco
sti
tHTCLIENT0x01privateco
sti
tHTCAPTION0x021、改变窗体大小和移动窗体的位置所有的和边框有关的消息都传到后面的窗体的处理,承载边框的PictureBoxEx会将传给它的系统消息忽略掉protectedoverridevoidW
dProcrefMessagemifmMsgWM_NCHITTESTthisDefW
dProcrefm移动窗体位置ifmResultToI
t32HTCLIENTthisWi
dowStateFormWi
dowStateMaximizedmResult
ewI
tPtrHTCAPTIONelsebaseW
dProcrefm改变窗体大小ifCha
geFormSize_i
tI
fo1thisWi
dowStateFormWi
dowStateMaximizedmResultI
tPtr_i
tI
fo_i
tI
fo1双击鼠标左键的消息elseifmMsgWM_NCLBUTTONDBLCLKifCha
geFormSize相当于单击一次最大化按钮bt
Max_MouseClick
ullEve
tArgsEmpty
felsebaseW
dProcrefm2、减少窗体闪烁下面的是比较常见的减少窗体闪烁的方法privatevoidSetStylesSetStyleCo
trolStylesUserPai
tCo
trolStylesAllPai
ti
gI
WmPai
tCo
trolStylesOptimizedDoubleBufferCo
trolStylesResizeRedrawCo
trolStylesSupportsTra
spare
tBackColortrueSetStyleCo
trolStylesSelectablefalseUpdateStyles还可以设置窗体双缓存在减少闪烁thisDoubleBufferedtrue在窗体控件的创建过程中,如果控件过多的话,用下面这个函数来处理控件的创建也可以减少闪烁publicclassAvoidCo
trolFlickerprivatei
t_pai
tFroze
publicvoidFreezePai
ti
gCo
troltoFreezeCo
trolboolisToFreezeif
ulltoFreezeCo
trolthrow
ewArgume
tNullExceptio