У меня была та же проблема, я все еще ищу решение; вот что я сделал до сих пор, это может быть решением для вас
const grid = 12;
private void MyControl_LocationChanged(object sender, EventArgs e)
{
if (this.Left % grid != 0)
this.Left -= this.Left % grid;
if (this.Top % grid != 0)
this.Top -= this.Top % grid;
}
или в пользовательском контроле
protected override void OnMove(EventArgs e)
{
if (this.Left % grid != 0)
this.Left -= this.Left % grid;
if (this.Top % grid != 0)
this.Top -= this.Top % grid;
}
Моя текущая задача - рисование; мои элементы управления размещены на панели, я ищу способ заблокировать и разблокировать чертеж панели при необходимости; например: только после изменения левого или верхнего