C# 中可调整大小的表格布局面板
我发现 c# (.net 2.0) 中的表格布局面板非常原始。 我希望允许我的用户调整表格布局面板中的列大小,但没有现成的选项可以执行此操作。 有没有办法至少找出光标是否直接位于单元格的任何边框上,如果是,则哪个单元格位于其下方? 可能有了这些信息,我们至少可以尝试通过代码调整该行/列的大小。 帮助我查找
- 光标是否直接位于
- 其下方的单元格的任何边框上(仅适用于第一个问题有答案的情况)
非常感谢,
Sudarsan Srinivasan
I find the table layout panel in c# (.net 2.0) to be very primitive. I wanted to allow my users to resize the columns in a table layout panel but there are no ready made options to do so. Is there a way atleast to find out whether the cursor is directly over any borders of a cell and if so, which cell is beneath it ?? May be having this information, we can atleast try resizing that row/column thru' code. Help me finding,
- whether the cursor is directly over any borders of a cell
- which cell is beneath it (applicable only if the first question has an answer)
Many Thanks,
Sudarsan Srinivasan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您的布局不太复杂,也许您可以通过使用 SplitContainer 控件? 不幸的是,每个 SplitContainer 将只有两个“单元格”,但您可以将 SplitContainer 嵌入到另一个 SplitContiner 面板中以获得更多可调整大小的单元格:
好的,所以 ASCII 艺术从来都不是我更强的技能之一,但我认为您明白了;o )
If your layout is not overly complex, maybe you can achieve what you want by using SplitContainer controls? Unfortunately, each SplitContainer will have only two "cells", but you can embed a SplitContainer in another SplitContiner panel to get more resizable cells:
OK, so ASCII art was never one of my stronger skills, but I think you get the point ;o)
构建在 @Fredrik Mörk 的解决方案之上:
嵌入另一个 SplitContainer 后,唯一的缺点是它们不自动一起调整大小,因此您很快就会失去表格视图。 解决方案可能是为每个适用的 SplitContainer 设置一个
SplitterMoved
事件处理程序:如果您的 SplitContainer 是水平的,则使用
e.SplitX
,如果是垂直的,则使用e.SplitY
。Building on top of @Fredrik Mörk's solution:
After embedding another SplitContainer(s), the only drawback is that they don't automatically resize together, so you quickly lose the tabular view. A solution could be to set up a
SplitterMoved
event handler for every applicable SplitContainer:If your SplitContainer is horizontal use
e.SplitX
, if it's vertical usee.SplitY
.使用分离器控件可以实现这一点(至少 .Net 4.x 以上)。 例如,使用面板,放下按钮,将其设置为停靠在左侧。 放下一个分离器,放下另一个按钮将其设置为停靠填充。 然后,用户可以在运行时设置控件内这些按钮的大小。
One can achieve this (at least .Net above 4.x) using the splitter control. For example use a panel, drop a button, set it to dock left. Drop a splitter, drop another button set it to dock fill. Then the size of these buttons within the control can be set by the user at runtime.