Я пытаюсь заполнить контейнер любым количеством элементов управления, которые имеют одинаковую высоту и ширину. Я разрешаю пользователю сокращать или увеличивать этот контейнер, и контейнер организует элементы управления так, чтобы он вмещал большинство элементов управления в одной строке. Вот код, чтобы организовать это:
int row = 0;
int column = 0;
for (int i = 1; i <= controls.Count; i++)
{
controls.Values[i-1].Top = row * controls.Values[0].Height;
controls.Values[i-1].Left = column * controls.Values[0].Width;
if (i % controlsPerRow == 0)
{
// This finishes a row
row++;
column = 0;
}
else
{
column++;
}
}
Проблема, с которой я столкнулся, заключается в том, что на первой итерации цикла я буду умножать высоту элемента управления на строку и назначать это значение свойству Top элемента управления. Первая строка равна 0, а первая высота равна 165. 0 * 165 = 0, но свойство Top содержит магическое значение -20 после присвоения 0.
Кто-нибудь знает, как это может произойти?