c# - 应用资源文件后如何更改控件的属性?

标签 c# .net visual-studio

当用户将字体大小更改为 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);
        });
    }
}

这很好用,但是其中一个组件不应该有滚动条。

上面的方法会在像这样初始化 Controller 时被触发:

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 设计器中更改该属性,并在大小更改时对该属性使用react。

因此,如果您将其更改为非默认(false),设计人员将为您添加这行代码:

this.ucASNSearchCriteria.AllowAutoScroll = false;

...你可以像这样对这个新属性使用react:

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);
            });
        }
    }
}

关于c# - 应用资源文件后如何更改控件的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30746523/

相关文章:

c# - 在不丢失 EXIF 数据的情况下使用 .NET 调整图像大小

c# - 尽管成功,但使用 AddRange 将 Int32 添加到 List<byte> 抛出异常

c# - ASP.NET Identity 2.0 Roles.IsUserInRole 给出 {"Invalid object name ' dbo.aspnet_SchemaVersions'."} 异常

c# - 正则表达式 : .net 与 javascript 中特殊字符的差异

visual-studio - 类型 Task<> 存在于 Unity.Tasks 和 mscorlib(Unity 问题)

c# - 抽象类和虚方法: cannot access certain variables

c# - 如何让 WebBrowser 控件显示现代内容?

.Net MemoryCache - 如何更新现有项目的过期时间?

visual-studio - Visual Studio 2017 TypeScript 编译错误

visual-studio - 为什么 Visual Studio 2019 在剪切和粘贴 F# 代码时会删除我的缩进?