c# - 使用 Left Dock 时出现 AutoScroll 问题 - C# Telerik Winforms
问题描述
这是我的代码:
RadScrollablePanel panel = new RadScrollablePanel() { AutoScroll = true, Dock = DockStyle.Fill};
pnlclp.PanelContainer.Controls.Add(panel);
foreach (var date in dates)
panel.Controls.Add(new ucDetails() { Dock = DockStyle.Left });
我在 a 中添加了一些控件RadScrollablePanel
,然后将其添加到PanelContainer
. 一切都很好。如果我在其中添加了这么多RadScrollablePanel
在第一眼中不可见的控件,滚动条也会显示出来。
但是如果我在foreach循环中更改为DockStyle.Left
,DockStyle.Right
加载控件后,它不会显示滚动条,这很奇怪,我找不到任何理由或解决方案来解决这个问题。
我什至尝试更改RightToLeft
. RadScrollablePanel
但没有成功:(
有什么建议吗?
解决方案
要解决标准 Microsoft WinForms 面板的这个问题,我可以建议将所有 UserControls 停靠在左侧,并使用一个空面板来占据表单左侧的所有可用空间,因此与停靠所有 UserControls 的行为完全相同向右。当表单的大小改变时,调整空面板的宽度。下面的代码说明了所描述的方法:
public partial class Form1 : Form
{
UserControl1[] userControls;
RadScrollablePanel parentPanel;
Panel spacePanel;
public Form1()
{
InitializeComponent();
new Telerik.WinControls.RadControlSpy.RadControlSpyForm().Show();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.parentPanel = new RadScrollablePanel();
this.parentPanel.Dock = DockStyle.Fill;
this.parentPanel.BackColor = Color.Yellow;
this.Controls.Add(this.parentPanel);
this.parentPanel.AutoScroll = true;
int count = 10;
this.userControls = new UserControl1[count];
for (int i = 0; i < count; i++)
{
this.userControls[i] =
new UserControl1()
{
Dock = DockStyle.Left,
BackColor = Color.FromKnownColor((KnownColor)(i + 50))
};
this.parentPanel.Controls.Add(this.userControls[i]);
}
this.spacePanel = new Panel();
this.spacePanel.Dock = DockStyle.Left;
this.parentPanel.Controls.Add(this.spacePanel);
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
if (this.spacePanel != null)
{
int lastPanelWidth = this.parentPanel.Width;
foreach (Control control in this.parentPanel.PanelContainer.Controls)
{
if (control.Dock == DockStyle.Left && control != this.spacePanel)
{
lastPanelWidth -= control.Width;
}
}
if (lastPanelWidth < 0)
{
lastPanelWidth = 0;
}
this.spacePanel.Width = lastPanelWidth;
}
}
}
推荐阅读
- javascript - jquery-ui-rotatable的销毁方法不起作用
- python - 使用 python 在 selenium 中使用下拉菜单选择项目
- wifi - 解释 802.11 吞吐量的降低
- python - 使用 Python 或 Matlab 查找图像的属性并与原始图像进行比较
- python - 运行位于 startTask 文件夹中的 R 脚本源代码的任务
- javascript - 序列化 li 的数据以通过 post 方法 ajax 发送
- javascript - 带有磁卡读卡器 javascript 问题的条纹元素
- sql - 如何使用列的最大值插入?
- angular - Highchart Y轴点未显示
- ios - Flutter WebView 加载时间