2012-12-05 2 views
14

Использование TableLayoutPanel в Windows Forms. Я использую RowStyles и ColumnStyles с SizeType как AutoSize и Percent соответственно. Мне нужно узнать абсолютную высоту и ширину ячейки, в которой размещен определенный элемент управления.Получить высоту и ширину ячейки TableLayoutPanel в Windows Forms

TableLayoutPanelCellPosition pos = tableLayoutPanel1.GetCellPosition(button1); 
int height = (int)tableLayoutPanel1.RowStyles[pos.Row].Height; 
int width = (int)tableLayoutPanel1.ColumnStyles[pos.Column].Width; 

Сверху, я получаю рост как 0. RowStyle с SizeType как AutoSize. Точно так же я получаю 33.33. ColumnStyle устанавливается с SizeType как Percent и Size = 33.33.

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

ответ

24

По какой-то странной причине Microsoft решила скрыть эти функции от intellisense.

Это должно работать, как написано:

TableLayoutPanelCellPosition pos = tableLayoutPanel1.GetCellPosition(button1); 
    int width = tableLayoutPanel1.GetColumnWidths()[pos.Column]; 
    int height = tableLayoutPanel1.GetRowHeights()[pos.Row]; 
+1

я не знаю, что это было возможно, чтобы скрыть функцию от IntelliSense, спасибо! – farukdgn

+0

@farukdgn См. [BrowsableAttribute Class] (https://msdn.microsoft.com/en-us/library/system.componentmodel.browsableattribute (v = vs.110) .aspx) – LarsTech

+0

Какой смысл скрывать функцию от там? – farukdgn