Как говорит @Rakitić, вам нужно убедиться, что все закреплено слева, сверху, снизу и справа.
В качестве иллюстрации я использовал одно многострочное текстовое поле размером для заполнения всей формы. Затем я помещаю следующий код в событие SizeChanged:
private void textBox1_SizeChanged(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
if (tb.Height < 10) return;
if (tb == null) return;
if (tb.Text == "") return;
SizeF stringSize;
// create a graphics object for this form
using (Graphics gfx = this.CreateGraphics())
{
// Get the size given the string and the font
stringSize = gfx.MeasureString(tb.Text, tb.Font);
//test how many rows
int rows = (int)((double)tb.Height / (stringSize.Height));
if (rows == 0)
return;
double areaAvailable = rows * stringSize.Height * tb.Width;
double areaRequired = stringSize.Width * stringSize.Height * 1.1;
if (areaAvailable / areaRequired > 1.3)
{
while (areaAvailable / areaRequired > 1.3)
{
tb.Font = new Font(tb.Font.FontFamily, tb.Font.Size * 1.1F);
stringSize = gfx.MeasureString(tb.Text, tb.Font);
areaRequired = stringSize.Width * stringSize.Height * 1.1;
}
}
else
{
while (areaRequired * 1.3 > areaAvailable)
{
tb.Font = new Font(tb.Font.FontFamily, tb.Font.Size / 1.1F);
stringSize = gfx.MeasureString(tb.Text, tb.Font);
areaRequired = stringSize.Width * stringSize.Height * 1.1;
}
}
}
}
В вашем случае со многими объектами в форме я бы просто выбрал один и использовал его, чтобы установить собственный размер шрифта, аналогичный приведенному выше, а затем повторил этот размер шрифта для всех объектов в форме. До тех пор, пока вы оставляете подходящий «допуск на ошибку» (чтобы иметь дело с переносом слов и т. д.), описанная выше техника должна вам помочь.
Кроме того, я настоятельно рекомендую установить минимальную ширину и высоту для вашей формы в событии Form SizeChanged, иначе могут произойти глупости!
person
Community
schedule
13.08.2016
anchor
и, во-вторых, опубликуйте свой фрагмент кода. - person Raktim Biswas   schedule 12.08.2016