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

oymdgrw7  于 2023-02-16  发布在  C#
关注(0)|答案(3)|浏览(212)

我在c#中找到了表格布局面板(. net 2. 0)非常原始。我想让我的用户在表格布局面板中调整列的大小,但没有现成的选项可以这样做。是否至少有一种方法可以找出光标是否直接位于单元格的任何边界上方,如果是,哪个单元格在它下面??可能有这些信息,我们至少可以试着通过代码调整行/列的大小。2帮我找一下,

  • 光标是否直接位于单元格的任何边框上
  • 哪个单元格在它下面(仅当第一个问题有答案时适用)

非常感谢!
苏达桑·斯里尼瓦桑

bejyjqdl

bejyjqdl1#

如果你的布局不是太复杂,也许你可以通过使用SplitContainer控件来实现你想要的?不幸的是,每个SplitContainer将只有两个“单元格”,但你可以将一个SplitContainer嵌入另一个SplitContiner面板中,以获得更多可调整大小的单元格:

┌──────────────────┐
│┌─────┬──────────┐│
││     │          ││
││     │          ││
│└─────┴──────────┘│
├──────────────────┤
│┌──────────┬─────┐│
││          │     ││
││          │     ││
│└──────────┴─────┘│
└──────────────────┘

好吧,ASCII艺术从来不是我的强项,但我想你明白我的意思了;o)

tzdcorbm

tzdcorbm2#

基于@Fredrik Mörk的解决方案:
在嵌入另一个SplitContainer之后,唯一的缺点是它们不会自动一起调整大小,因此很快就会丢失表格视图。一个解决方案是为每个适用的SplitContainer设置一个SplitterMoved事件处理程序:

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

如果SplitContainer是水平的,则使用e.SplitX;如果是垂直的,则使用e.SplitY

bttbmeg0

bttbmeg03#

使用拆分器控件可以实现这一点(至少.Net 4.x以上版本)。例如,使用面板,放下一个按钮,将其设置为靠左。放下一个拆分器,放下另一个按钮,将其设置为靠满。然后,用户可以在运行时设置控件中这些按钮的大小。

相关问题