C# 中可调整大小的表格布局面板

发布于 2024-07-24 15:40:13 字数 281 浏览 10 评论 0原文

我发现 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

涫野音 2024-07-31 15:40:13

如果您的布局不太复杂,也许您可​​以通过使用 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)

腹黑女流氓 2024-07-31 15:40:13

构建在 @Fredrik Mörk 的解决方案之上:

嵌入另一个 SplitContainer 后,唯一的缺点是它们不自动一起调整大小,因此您很快就会失去表格视图。 解决方案可能是为每个适用的 SplitContainer 设置一个 SplitterMoved 事件处理程序:

private void mySplitContainer_SplitterMoved(object sender, SplitterEventArgs e) {
  mOtherySplitContainer.SplitterDistance = e.SplitX;
}

如果您的 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:

private void mySplitContainer_SplitterMoved(object sender, SplitterEventArgs e) {
  mOtherySplitContainer.SplitterDistance = e.SplitX;
}

If your SplitContainer is horizontal use e.SplitX, if it's vertical use e.SplitY.

雪若未夕 2024-07-31 15:40:13

使用分离器控件可以实现这一点(至少 .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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文