Toolstrip, который может автоматически изменять размер - PullRequest
1 голос
/ 22 июня 2010

Я использую этот замечательный код, который, кстати, если вы знаете какой-либо лучший способ сделать это, я очень рад сообщить нам. так вот панель инструментов, которая может плавать:

http://en.csharp -online.net / Инструмент, _menu, _and_Status_Strips% E2% 80% 94Floating_ToolStrips

хорошо, но что, если у меня только 4 кнопки на этой панели инструментов, когда я заставляю ее плавать, она по-прежнему имеет тот же размер, что и пристыкована к форме ранее, но я бы хотела, чтобы она могла изменять свой размер и быть такой же длинной должно быть, чтобы показать свои кнопки на нем.

Ответы [ 3 ]

1 голос
/ 09 августа 2010
  m_floatForm.AutoSize = True
  m_floatForm.AutoSizeMode = AutoSizeMode.GrowAndShrink
1 голос
/ 24 июня 2010

Вы можете сложить ширину отдельных элементов панели инструментов и использовать ее в качестве ширины формы.

Замените это:

floatForm.ClientSize = this.Size;

на следующее:

//Adjust min value for your needs. It should account for the width of the
//toolstrip, borders, etc.
int minWidth = 20;  

int newWidth = minWidth;
foreach (ToolStripItem item in this.Items)
{
    newWidth += item.Size.Width;
}
floatForm.ClientSize = new Size(newWidth, this.Size.Height);
0 голосов
/ 29 августа 2015

PreferredSize помог мне.Я не ожидал работать с ToolStip, но он работает, по крайней мере, на .Net 4.5.

Мне все еще пришлось добавить фиксированное число, чтобы учесть несколько пикселей, которые я не уверен, где они находятсяИсходя из.

this.Width = toolStrip.PreferredSize.Width + toolStrip.Margin.Horizontal + toolStrip.Parent.Margin.Horizontal + toolStrip.Parent.Padding.Horizontal+20;
...