2010-06-22 1 views
1

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

http://en.csharp-online.net/Tool,_Menu,_and_Status_Strips%E2%80%94Floating_ToolStrips

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

ответ

1
m_floatForm.AutoSize = True 
    m_floatForm.AutoSizeMode = AutoSizeMode.GrowAndShrink 
1

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

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

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

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

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

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