问题标签 [tablelayoutpanel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 表格布局面板
TableLayoutPanel 是否存在于 VS 2005 中?
c# - 动态填充的 TableLayoutPanel 性能下降
我有一个包含 2 列 TableLayoutPanel 的用户控件,并接受命令以动态添加行以显示在单独控件中选择的项目的详细信息。因此,用户将在另一个控件(DataGridView)中选择一行,并在 DataGridView 的 SelectedItemChanged 事件处理程序中清除详细信息控件,然后为新选定项重新生成所有行(可能具有完全不同的详细信息从先前选择的项目中显示)。这在一段时间内效果很好。但是如果我长时间从一个选定的项目移动到另一个,刷新会变得非常慢(每次 3-5 秒)。这听起来好像我没有正确处理所有东西,但我无法弄清楚我错过了什么。这是我清除 TableLayoutPanel 的代码:
一旦我完成将我想要的所有控件加载到 TableLayoutPanel 中以进行下一个详细显示,这就是我所说的:
我在 TableLayoutPanel 中只使用标签(很少使用 TextBox),我在创建它们时将标签和文本框添加到控件列表(在 DisposeAndClearControls() 中引用)。我尝试只是迭代 detailTable.Controls 并以这种方式处理它们,但它似乎错过了一半的控件(通过在调试器中单步执行来确定)。这样我就知道我得到了所有。
我会对提高绘图性能的任何建议感兴趣,尤其是导致多项选择下降的原因。
.net - 如何使 TableLayoutPanel 中的所有列自动调整为完全相同的宽度?
我正在尝试创建一个相当广泛的 UserControl,将方形控件合并到设计中,并允许调整大小。因为设计需要正方形,所以我需要 TableLayoutPanels 中的所有列具有相同的宽度,以便包含的停靠控件也是正方形的。
不幸的是,TableLayoutPanel 的行为并没有给我这个结果。
使用所有列设置为使用相同百分比的 Control 的 TableLayoutPanel 给出(在一组 7 列中)6 列等宽和第 7 列宽度可变。
我知道发生这种情况是因为每 7 种尺寸中有 6 种,在 7 列周围共享的列像素数量不相等,而第 7 列是这种不等式的溢出。
我想我想要的是第 8 列,它占用其他 7 列的溢出,允许所有 7 个“真实”列具有真正相等的宽度,但允许第 8 列的宽度为 0 .
到目前为止,我找不到允许这种行为的设置。
谁能告诉我如何让 TableLayoutPanel 做我想做的事,还是我必须开始编写很多解决方法代码?
编辑:
作为对 Yacoder 的回答,我添加了一些代码来演示该问题,而另一个代码显示了使用 TableLayoutPanel 和 Dock 属性的标准功能来解决它的不成功的、幼稚的尝试
问题演示:
天真的解决方案:
对于这段代码在重绘时的糟糕表现,我深表歉意。
.net - TableLayoutPanel 控件 - 从水平滚动锁定列?
我在 Windows 窗体应用程序中使用 TableLayoutPanel 以类似网格的方式组织一组控件。我想锁定 TableLayoutPanel 的第一个控件列,以便在用户应用水平滚动条时它保持固定。任何指导表示赞赏。
c# - c# 中可调整大小的表格布局面板
我发现 c# (.net 2.0) 中的表格布局面板非常原始。我想让我的用户在表格布局面板中调整列的大小,但没有现成的选项可以这样做。有没有办法至少找出光标是否直接在单元格的任何边界上,如果是,哪个单元格在它下面?可能有这些信息,我们至少可以尝试通过代码调整该行/列的大小。帮我找,
- 光标是否直接位于单元格的任何边框上
- 哪个单元格在其下方(仅在第一个问题有答案时适用)
非常感谢,
苏达桑·斯里尼瓦桑
css - WinForms 和 XAML 不能从与 CSS 相同的逻辑中受益吗?
WinForms 和 XAML 不能从与 CSS 相同的逻辑中受益吗?
今天早上,当我在 Stackoverflow 上浏览一些未回答的问题时,我突然想到:
如果您没有使用FlowLayoutPanel或TableLayoutPanel来在您的 WinForm 上布局控件,您将被指责做得不对。
这与 html 世界中关于CSS 与 Tables的(宗教)辩论形成鲜明对比。
在我看来,使用表格布局的 UI 的可维护性问题已被移植到 WinForms。XAML 可以被认为是 HTML 的一种形式,它包含了基于表格的布局。如果不使用表,您将很难在 XAML 中做任何事情。
WinForms 和 XAML 不能从与 CSS 相同的逻辑中受益吗?桌子的维护问题能不能解决?我意识到在使用表格布局的 WinForm 或 WPF 表单上,可访问性不是问题:读者不会“看到”布局面板 - 所以这是 CSS 中的问题,而 WinForms 中不存在。
但是 WinForms/XML 不能从基于非表格的布局中受益吗?我知道我当然不想以基于表格的方法将“确定”按钮 3 个对话框单元移到左侧。
c# - Winforms TableLayoutPanel adding rows programmatically
I've been fighting with this for a while, and have found that a number of other people struggle with the TableLayoutPanel (.net 2.0 Winforms) as well.
Problem
I am attempting to take a 'blank' tablelayoutpanel, which has 10 columns defined, then at runtime programmatically add rows of controls (i.e. one control per cell).
One might have thought that it should be as simple as
But that (for me) doesn't add the rows. So maybe adding in a row style
But that doesn't work either. I've dug around and found out that the myTableLayoutPanel.RowCount
usage changes from design time to run time, hence doing myTableLayoutPanel.RowCount++;
doesn't actually add another row, not even before/after adding a RowStyle entry for it!
Another related issue I am encountering is that the controls will be added to the display, but they all simply get rendered at point 0,0 of the TableLayoutPanel, additionally they are not even constrained to be within the Cell bounds that they are supposed to be displayed within (i.e. with Dock = DockStyle.Fill they still appear way too large/small).
Does someone have a working example of adding rows & controls at runtime?
.net - 如何防止控件在 TableLayoutPanel 内调整大小时视觉滞后?
我有一个基于几个嵌套TableLayoutPanel
s 的中等复杂度的布局。调整窗体大小会导致更深的嵌套表中的控件在视觉上落后于调整大小。首先,这使它们看起来像是在调整窗体大小时它们在移动,但更糟糕的是,当它们滞后到足以离开分配的表格单元格时,控件的边缘会明显被剪裁。
有什么办法可以防止这种情况,或者这是最好的TableLayoutPanel
方法吗?
编辑:在尝试了一堆程序后,我得出结论,调整大小的滞后是一个普遍存在的问题。对我来说,似乎每个人都已经辞职,这是不可避免的和可以接受的。当然,如果它实际上是不可避免的,那么接受这一点就容易多了:)
在您最喜欢的“良好 UI”程序中查看延迟的最简单方法是:通过按住左边界调整它的大小并观察所有右对齐的控件(或者,顶部边界和底部对齐的控件,如状态栏)。周围都坏了。
如果有人可以提供充分的理由说明为什么在使用本机 Windows 控件时这是不可避免的,我会接受这个答案。此外,如果您发现使用本机控件的程序不会遭受这种情况,请说出来,这可能会有所帮助...
.net - 自动调整 TableLayoutPanel 的大小
我有一个以编程方式创建的 TableLayoutPanel。它工作正常,但我找不到任何东西:如何在调整表单大小时自动调整列大小?面板设置为 Dock.Top 并且当我调整表单大小而不是按百分比调整每列的大小时,只有最后一列会增长。我能为此做些什么?以下是我为每列添加 ColumnStyle 的方法:
c# - TableLayoutPanel Controls.Add 问题
我有一个 2 列 4 行的 TableLayputPanel,我试图在运行时向它添加按钮。我想将每个按钮动态添加到第一个单元格:
据我了解,这应该将所有现有按钮向上移动一个单元格。这似乎在前三次有效,但之后将新按钮插入第二个单元格几次,然后是第三个单元格,然后是第四个等等......
对给定单元格调用 Controls.Add(ctrl, column, row) 的次数是否有限制?
我有点卡住了,我做错了什么?