应用资源文件后,如何更改控件的属性

本文关键字:何更改 控件 属性 资源 源文件 应用 | 更新日期: 2023-09-27 17:55:08

当用户将其字体大小更改为 125% 或 150% 时,我需要为组件添加滚动条。为此,我在组件中添加了一个方法,该方法将自动滚动属性设置为 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";

该方法将在添加到控件时触发,之后将应用资源。我不想更改的组件属于上面的代码中的ucASNSearchCriteria

现在我想在应用资源后将"ucASNSearchCriteria"的AutoScroll属性设置为 false。我对 c# ui 控件的呈现过程知之甚少。申请后是否可以动态更改属性?

应用资源文件后,如何更改控件的属性

我会创建一个所需类型的派生控件,并添加一个属性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);
            });
        }
    }
}