Tag: tablelayoutpanel

在tablelayoutpanel中的某些单元格周围绘制边框

不要问为什么,但我有要求在TableLayoutPanel某些单元格周围绘制边框。 例如,为简单起见,假设我有1行,5列TableLayoutPanel 。 每个单元格中都有一个按钮。 我想在前3个单元格周围绘制一个框,然后在最后2个单元格周围绘制另一个框。 总共有两个盒子。 有关如何实现这一目标的任何建议? 谢谢。

获取Windows窗体中TableLayoutPanel单元格的高度和宽度

在Windows窗体中使用TableLayoutPanel。 我使用RowStyles和ColumnStyles分别使用SizeType作为AutoSize和Percent。 我需要找出放置特定控件的单元格的绝对高度和宽度。 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。 我需要获得单元格的绝对大小(以像素为单位)。

在运行时期间动态地向TableLayoutPanel添加控件

我有一个TableLayoutPanel,以两列和0行开头。 我需要做的是,动态添加一行并用不同的控件填充两列(它将是面板)。 在Form1中,我以这种方式创建TableLayout: TableLayoutPanel Table = new TableLayoutPanel(); Table.Location = new Point(10, 40); Table.Size = new Size(620,100); Table.AutoSize = true; Table.Name = “Desk”; Table.ColumnCount = 2; Table.RowCount = 0; Table.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; Table.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.AddRows; this.Controls.Add(Table); 之后在运行时我将获得需要多少行,以及是否将填充Panel或某些Label。 可能会发生在同一行中,将是Panel,right Label等。

TableLayoutPanel显示垂直滚动

我有TableLayoutPanel用于动态创建AutoScroll = true的控件。 添加新控件时,它工作正常。 但是当我删除并且所有控件都可见时,可以看到垂直滚动。 这里有一些截图: 预期/正确滚动可见性: 能见度不正确: 有任何想法吗? 更新:这是一些代码 tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.RowCount = 0; tableLayoutPanel1.RowStyles.Clear(); tableLayoutPanel1.AutoScroll = true; tableLayoutPanel1.Padding = new Padding(0, 0, SystemInformation.VerticalScrollBarWidth, 0); foreach (var item in objects) { tableLayoutPanel1.RowCount++; tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize)); tableLayoutPanel1.Controls.Add(CreateNewItem(item)); } tableLayoutPanel1.RowCount++; tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize)); tableLayoutPanel1.Controls.Add(CreateAddButton()); tableLayoutPanel1.ResumeLayout(); 和删除代码 tableLayoutPanel1.SuspendLayout(); tableLayoutPanel1.Controls.Remove(item); tableLayoutPanel1.RowStyles.RemoveAt(0); tableLayoutPanel1.RowCount–; tableLayoutPanel1.ResumeLayout(); AutoSize为true,AutoSizeMode为GrowAndShrink

TableLayoutPanel对事件的响应非常缓慢

在我的应用程序中,我真的需要放置很多控件(标签,文本框,domainupdown)。 所以我继续使用了一些嵌套的TableLayoutPanel 。 现在的问题是,这种forms对大多数事件响应非常缓慢(resize,最大化,最小化和……)表格中的控件实际上需要花费5秒才能resize,重新绘制到新的表单大小。 我现在把手指放在眼睛里! 如果这个表格在我的家用电脑上很慢(i7 @ 4GHz和一张好的显卡)它会在旧的P4电脑上运行吗? 我甚至尝试使用下面的代码,但它绝对没有任何东西,如果它没有减慢更多! private void FilterForm_ResizeBegin(object sender, EventArgs e) { foreach(TableLayoutPanel tlp in panelFilters.Controls) { if(tlp != null) { tlp.SuspendLayout(); } } } private void FilterForm_ResizeEnd(object sender, EventArgs e) { foreach (TableLayoutPanel tlp in panelFilters.Controls) { if (tlp != null) { tlp.ResumeLayout(); } } } 请告诉我是否有一个技巧可以让tablelayoutpanel更快地工作……或者如果你知道一个更好的方法来放置大约数百个很好地对齐的控件。