c# - How to prevent user to add control on specific location? -
previously have posted question how create non-client area? , got answer. now, want prevent user add control on specific client area.so, user can add control on allocated portion of client area.
the control should looked this.
class design & codes
xwizardcontrol: main user control placed on form.
xwizardpagewindow: container contains xwizardpages
. control placed on xwizardcontrol
. user add pages control collection dialog window.
xwizardpagecollection: collection of xwizardpage
.
xwizardpage: user place other controls here.
xwizardpagedesigner: control designer xwizardpage
control
you're setting nonclient rectangle incorrectly.
"on entry, structure contains proposed window rectangle window. on exit, structure should contain screen coordinates of corresponding window client area." -msdn-
also notice rect
structure ltrb
rectangle , not xywh
rectangle.
incorrect
you shouldn't set values explicit:
ncrect.top = 68; //<---- ncrect.left = 176; //<---- ncrect.bottom -= 68; ncparams.rectproposed.top = 68; //<---- ncparams.rectproposed.left = 176; //<---- ncparams.rectproposed.bottom -= 68;
correct
but rather add (+=
) or subtract (-=
) to/from rectangle:
ncrect.top += 30; //<---- 30px top-margin ncrect.left += 50; //<---- 50px left-margin ncrect.bottom -= 20; //<---- 20px bottom-margin ncparams.rectproposed.top += 30; ncparams.rectproposed.left += 50; ncparams.rectproposed.bottom -= 20;
note
if don't paint nonclient area correctly, , control placed @ lets location -5, -5
, control may appear if it's inside nonclient area.
Comments
Post a Comment