Nag*_*agu 17 c# scrollbar tablelayout winforms
嗨,我有一个tablelayoutpanel,我动态绑定控件.当项目数超过面板高度时,显然出现垂直滚动条没有问题.
但同时水平滚动条也出现,即使项目宽度小于面板的宽度.我该如何防止这种情况?
小智 39
int vertScrollWidth = SystemInformation.VerticalScrollBarWidth;
tableLayoutPanel1.Padding = new Padding(0, 0, vertScrollWidth, 0);
Run Code Online (Sandbox Code Playgroud)
小智 7
今天在这上面丢了一些毛,但是我解决了,这就是我最终的结果:
创建一个继承自TableLayoutPanel的新类(让我们称之为MyTableLayoutPanel),并覆盖MaximumSize属性,如下所示:
public override Size MaximumSize
{
get
{
if (Parent != null)
return new Size(Parent.Width, 0);
else
return base.MaximumSize;
}
set
{
base.MaximumSize = value;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以通过添加另一个属性来决定是否应该返回更改后的MaximumSize来更加通用,但希望对于那些阅读此内容的人来说,这一点很明显.
将您已获得的TableLayoutPanel更改为新的MyTableLayoutPanel类型.
将其添加到常规Panel.在此Panel上启用AutoScroll而不是MyTableLayoutPanel(如果您还没有,请在那里禁用它).
将MyTableLayoutPanel AutoSize属性设置为true,将其Anchor属性设置为Left,Right和Top.
小智 6
我有一个停靠的TableLayoutPanel包含停靠的GroupBoxes和一个设置为100%宽度的列的问题.我不想为这些设置手动大小 - 我希望它们与表单一起调整大小.
奇怪的是,将TableLayoutPanel的右侧填充设置为1(不是滚动条的宽度 - 留下滚动条大小的间隙,如您所料)完全解决了这个问题.这是在C#2010 Express,.NET 4,Windows 8中.不知道这个kludge是否适用于其他变体.
将填充设置为0 似乎解决了IDE中的问题,但实际运行时问题仍然存在.
闻到TableLayoutPanel中的某些错误给我...或者它可能只是我拥有的控件和属性的特定组合(这是一个相当复杂的布局).
小智 1
问题是您的项目恰好是布局面板的宽度,因此当垂直滚动出现时,它会稍微切入您的控件,从而强制水平滚动?如果是这样,您可以缩小控件的宽度以考虑滚动条的可能性,或者您可以尝试在滚动条出现时调整它们。
| 归档时间: |
|
| 查看次数: |
20040 次 |
| 最近记录: |