问题标签 [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.

0 投票
1 回答
495 浏览

c# - C# - 在运行时使用对在设计时添加到 TableLayoutPanel 的按钮的引用来填充数据结构

我正在使用 Visual C# 2008 Express 版本。

如果在设计时我有一个表单 [myMainForm],
我在其中添加了一个 TabControl [myTabControl],
并且 myTabControl 有一个 tabPage [myTabPage],
我在这个 tabPage 中添加了一个 tableLayoutPanel [myTableLayoutPanel],
并且我在 myTablelayoutPanel添加了十个按钮(button1、button2、button3 等)。

在运行时,我想使用对我添加到 myTableLayoutPanel 的所有十个按钮的引用来填充数据结构。我想以最简单、最有效的方式处理对按钮的引用。与数组结合的 for...next 循环是解决问题的最佳方法吗?

我意识到我可以以编程方式将按钮添加到面板中,但如果我这样做,我将不得不在代码中调整它们的视觉设置,我宁愿避免这样做,以保持我的代码尽可能干净和简单。

如果有人可以发布几行代码来让我继续这样做,我将不胜感激。

感谢您抽时间阅读。快乐编码。

问候,

事情

0 投票
1 回答
107 浏览

.net - 如何在表单上使用从 .NET 类(如 TableLayoutPanel)派生的类

这是一个非常基本的问题,我相信你们中的许多人都能够回答并且不仅适用于 TableLayoutPanel,而且也适用于所有其他 .NET 控件。

我创建了一个派生自 TableLayoutPanel 的新类,我想在表单上使用这个派生而不是 .NET 版本。我希望能够像工具箱中的所有其他控件一样使用拖放。

但是,我不知道该怎么做;我还猜测,对于派生类,这种拖放到表单上的操作无法在设计器中完成;并且必须仅在代码中完成。我对此不确定,因为这是我的第一个 .NET 表单应用程序,所以我没有经验可以依靠。

承载此控件(不是直接)的窗体在称为 MainForm 的窗体中实现。我想我可以进入 deigner.cs (MainForm.Designer.cs) 文件并将成员变量更改为我的自定义类型而不是 .NET 类型,但我不确定这是否是执行此操作的既定方法一种功能,或者这是否是一种黑客行为。据我所知,您不应手动更改 XXXdesigner.cs 文件中的代码,因为这是自动生成的。

0 投票
2 回答
10926 浏览

tablelayoutpanel - TableLayoutPanel:无法正确调整内容行的大小

我正在使用 TableLayoutPanel 将客户区拆分为 3 行(只有 1 列)。顶排和底排设计为固定高度;它们将包含一个页眉和一个页脚,最初每个都包含一个包含静态文本的子标签控件(只是开始)。中间行应动态调整大小以填充剩余区域。这个中间窗格最终将包含一个列表视图。我有一个管理器类,它将被管理的面板(ExplorerTableLayoutPanel)对象作为参数:

有 3 种方法可以在表格布局中创建 3 行中的每一行:

我看到的问题是最后一行占用了我要求的固定行高 30。这部分是正确的。但是,第一行和第二行在它们之间平均分配剩余空间,这不是我想要的。如您所见,我已将第一行的行高显式设置为 30,其方式与最后一行完全相同,但这似乎不起作用。第 2 行(中间)的 RowStyle 大小设置为 SizeType.AutoSize,虽然我的意思是用完剩余空间,所以不要明确设置大小。我可能错了,但我不确定。

0 投票
1 回答
636 浏览

c# - 如何在 TableLayoutPanel 中创建禁用的滚动条

我有一个包含多列的表格布局面板。我为页眉和页脚添加了另外 2 个表格布局面板,因为我不希望垂直滚动影响页眉和页脚。但是,由于有 3 个不同的表格布局面板,当我们在中心面板中获得垂直滚动条时,我无法对齐单元格边框。一种方法似乎是始终存在一个禁用的滚动条,该滚动条仅在需要时才启用。检查但没有找到任何参考来做到这一点。有任何想法吗?

0 投票
1 回答
1025 浏览

c# - C# TableLayoutPanel 鼠标离开

问候,我正在开发战舰克隆游戏,但我遇到了 TableLayoutPanel MouseLeave 事件的问题。

第一个鼠标移动:

这似乎运行正常。

现在是 MouseLeave 事件:

这表现得很奇怪。它通过代码,甚至显示“HI”,但 PictureBox 图像未更改为水。关于为什么的任何想法?这不会一直发生,只是偶尔会发生。

上面的代码所做的基本上是扫描表格单元格,如果单元格内容是 WATER,那么它将表格单元格图像更新为 SCAN,并且随着用户继续前进,它将单元格图像切换回 WATER。

希望这是足够的信息。请询问是否需要更多。

先感谢您。

ps这是尝试像mouseover和mouseexit这样的javascript。

我已经取得了一些进展。原来在 MouseLeave 之后,MouseMove 被再次调用,因此结果我正在经历。

只需要以我认为的另一种方式对其进行逻辑。

0 投票
2 回答
25694 浏览

c# - 以编程方式更改行/列跨度(tablelayoutpanel)

我有一个表格布局面板。2x2 - 2 列 2 行。

例如,我在 1 行第二列中添加了一个按钮button1 。button1的停靠属性设置为 Fill。VS Designer 允许设置button1的列/行跨度属性。

我想要以编程方式更改button1 的行跨度属性的可用性,因此它可以填充所有第二列(1 行和第二行)并且可以将其设置回来。

如何?

0 投票
1 回答
4352 浏览

.net - Flowlayout panel and autosizing child controls doesn't work

I am trying to get a very simple autosizing layout on a winform (C# .NET). I've tried TableLayoutPanels and FlowLayoutPanels but nothing works.

I have a usercontrol which is a container for other usercontrols which are created at runtime - I've called it StackPanel as I want it to list the child controls vertically. I've tried this using a FlowLayoutPanel, TableLayoutPanel and a Panel (with each control docked to the top).

The child usercontrol consists of a label and then any number of radiobuttons (or any other standard control - it doesn't matter).

When the child controls are created, the label text is set (if this is long it needs to wrap to a new line) and the radio buttons are added.

There seems to be no combination of docking/autosizing or manual size setting using the Resize events that can get everything to show without clipping and still resize with the form.

Thanks!

0 投票
1 回答
18032 浏览

c# - 删除Windows窗体中tablelayoutpanel中单元格之间的间距?

我以编程方式创建了一个类 Map,它继承自 TableLayoutPanel 类。Map 类添加了 Tile 对象(Panel 的子对象),每个对象都有一个背景图像。一切正常,除了我想删除的每个单元格之间有一个明显的空间。

我环顾四周,但无法弄清楚如何删除 TableLayoutPanel 中单元格之间的空间。删除它的最简单方法是什么?

0 投票
8 回答
48015 浏览

c# - 隐藏和显示 TableLayoutPanel 的单元格

我的表格布局面板有一列三行。(一个停靠在每个单元格中的填充面板上。)

现在我希望能够隐藏/显示行。我希望任何时候都只看到一行(基于用户对某些单选按钮的选择),并且我想调整大小以填充 TableLayoutPanel 的所有区域。

我怎样才能做到这一点?有什么想法吗?

0 投票
4 回答
7384 浏览

c# - .Net TableLayoutPanel - 清除控件非常慢

这真的很简单。

我有一个 TableLayoutPanel,它基于数据库查询填充了控件(只是标签、按钮和一些带有按钮的面板)。当需要刷新数据时,我使用 TableLayoutPanel.Controls.Clear()。不幸的是,这是一个非常缓慢的操作。我希望它比填充表格的代码快,但它至少慢 3 或 4 倍。

我明确地证明了缓慢是在执行 Controls.Clear() 时,通过在显示消息框后将其作为对 TableLayoutPanel 完成的单一操作执行(然后过程返回)。控件从下往上明显消失。当使用记录集重新填充 TableLayoutPanel 时,控件从上到下出现的速度几乎比我看到的要快。

我已经在做 TableLayoutPanel.SuspendLayout() 和 ResumeLayout()。

在表单上使用this.DoubleBuffered = true似乎没有任何作用。

我可以只处理整个控件并通过代码重新创建它,但这是一个很大的痛苦,并且使拥有一个漂亮的表单设计器 GUI 毫无意义。我必须深入研究我在控件上设置的每个属性并为其创建一行代码(尽管我想我可以从设计器代码本身中得到它,但它仍然感觉不对)。

关于如何更快地完成工作的任何想法?我什至愿意使用除 TableLayoutPanel 之外的其他方法......我只需要自由地在每个单元格中放置多个按钮,或者禁止它能够跨越表格标题中的列。

C# 至少可以在重绘时冻结整个表单,然后一次全部绘制吗?