当用户将字体大小更改为125%或150%时,我需要为组件添加滚动条。为此,我在组件中添加了一个方法,该方法将AutoScroll属性设置为true。
protected override void OnSizeChanged(EventArgs e)
{
if (SystemFonts.DefaultFont.Size < 8)
{
this.AutoScroll = true;
}
if (this.Handle != null)
{
this.BeginInvoke((MethodInvoker) delegate
{
base.OnSizeChanged(e);
});
}
}
这很好用,但其中一个组件不应该有滚动条。
在初始化控制器时将触发上述方法:
this.ultraExpandableGroupBoxPanel1.Controls.Add(this.pnlViewMode);
this.ultraExpandableGroupBoxPanel1.Controls.Add(this.ucASNSearchCriteria);
resources.ApplyResources(this.ultraExpandableGroupBoxPanel1, "ultraExpandableGroupBoxPanel1");
this.ultraExpandableGroupBoxPanel1.Name = "ultraExpandableGroupBoxPanel1";
添加到Controls中时将触发该方法,之后将应用该资源。我不想更改的组件属于上面代码中的ucASNSearchCriteria
。
现在我想在应用资源后将'ucASNSearchCriteria'的AutoScroll
属性设置为false。我对c#ui控件的渲染过程知之甚少。应用后是否可以动态更改属性?
答案 0 :(得分:2)
我会创建一个所需类型的派生控件,并使用默认值AllowAutoScroll
添加属性true
或其他类似内容。
有了这个,您可以轻松地在WinForms设计器中更改该属性,并在大小发生变化时对该属性做出反应。
因此,如果您将其更改为非默认值(false
),设计人员将为您添加此行代码:
this.ucASNSearchCriteria.AllowAutoScroll = false;
...你可以对这个新属性做出反应:
protected override void OnSizeChanged(EventArgs e)
{
if (AllowAutoScroll)
{
if (SystemFonts.DefaultFont.Size < 8)
{
this.AutoScroll = true;
}
if (this.Handle != null)
{
this.BeginInvoke((MethodInvoker) delegate
{
base.OnSizeChanged(e);
});
}
}
}