我在c#中找到了表格布局面板(. net 2. 0)非常原始。我想让我的用户在表格布局面板中调整列的大小,但没有现成的选项可以这样做。是否至少有一种方法可以找出光标是否直接位于单元格的任何边界上方,如果是,哪个单元格在它下面??可能有这些信息,我们至少可以试着通过代码调整行/列的大小。2帮我找一下,
非常感谢!苏达桑·斯里尼瓦桑
bejyjqdl1#
如果你的布局不是太复杂,也许你可以通过使用SplitContainer控件来实现你想要的?不幸的是,每个SplitContainer将只有两个“单元格”,但你可以将一个SplitContainer嵌入另一个SplitContiner面板中,以获得更多可调整大小的单元格:
┌──────────────────┐ │┌─────┬──────────┐│ ││ │ ││ ││ │ ││ │└─────┴──────────┘│ ├──────────────────┤ │┌──────────┬─────┐│ ││ │ ││ ││ │ ││ │└──────────┴─────┘│ └──────────────────┘
好吧,ASCII艺术从来不是我的强项,但我想你明白我的意思了;o)
tzdcorbm2#
基于@Fredrik Mörk的解决方案:在嵌入另一个SplitContainer之后,唯一的缺点是它们不会自动一起调整大小,因此很快就会丢失表格视图。一个解决方案是为每个适用的SplitContainer设置一个SplitterMoved事件处理程序:
SplitterMoved
private void mySplitContainer_SplitterMoved(object sender, SplitterEventArgs e) { mOtherySplitContainer.SplitterDistance = e.SplitX; }
如果SplitContainer是水平的,则使用e.SplitX;如果是垂直的,则使用e.SplitY。
e.SplitX
e.SplitY
bttbmeg03#
使用拆分器控件可以实现这一点(至少.Net 4.x以上版本)。例如,使用面板,放下一个按钮,将其设置为靠左。放下一个拆分器,放下另一个按钮,将其设置为靠满。然后,用户可以在运行时设置控件中这些按钮的大小。
3条答案
按热度按时间bejyjqdl1#
如果你的布局不是太复杂,也许你可以通过使用SplitContainer控件来实现你想要的?不幸的是,每个SplitContainer将只有两个“单元格”,但你可以将一个SplitContainer嵌入另一个SplitContiner面板中,以获得更多可调整大小的单元格:
好吧,ASCII艺术从来不是我的强项,但我想你明白我的意思了;o)
tzdcorbm2#
基于@Fredrik Mörk的解决方案:
在嵌入另一个SplitContainer之后,唯一的缺点是它们不会自动一起调整大小,因此很快就会丢失表格视图。一个解决方案是为每个适用的SplitContainer设置一个
SplitterMoved
事件处理程序:如果SplitContainer是水平的,则使用
e.SplitX
;如果是垂直的,则使用e.SplitY
。bttbmeg03#
使用拆分器控件可以实现这一点(至少.Net 4.x以上版本)。例如,使用面板,放下一个按钮,将其设置为靠左。放下一个拆分器,放下另一个按钮,将其设置为靠满。然后,用户可以在运行时设置控件中这些按钮的大小。