我的新自定义控件有点问题。问题是我希望它通过32px步骤来调整大小以创建一个网格,所以我正在寻找一个调整大小后的事件,或类似的东西来调整控件的大小。任何人都有一些想法吗?
答案 0 :(得分:4)
只需强制执行尺寸要求:
class MyGrid : Control {
private const int pitch = 32;
protected override void OnClientSizeChanged(EventArgs e) {
var w = pitch * ((this.ClientSize.Width + pitch/2) / pitch);
var h = pitch * ((this.ClientSize.Height + pitch/2) / pitch);
if (w != this.ClientSize.Width || h != this.ClientSize.Height)
this.ClientSize = new Size(w, h);
else base.OnClientSizeChanged(e);
}
}
这不是最精彩的设计时间体验,但它既可维修又非常简单,因为它不需要定制设计师。
对此非常小心,硬盘编码的像素大小并不是一个好主意,如今可以使用4K显示器并且价格低于500美元。那个32像素的网格单元将成为这样一个屏幕上的灰尘斑点。