【问题标题】:Accessing Design time properties in .NET ActiveX User control constructor during runtime在运行时访问 .NET ActiveX 用户控件构造函数中的设计时属性
【发布时间】:2012-11-13 09:37:43
【问题描述】:

我有一个作为 ActiveX 控件公开的 .Net 用户控件。现在我想根据用户的选择为这个控件提供本地化/全球化。我所做的是我在 COM 接口中添加了一个名为“Language”的属性,以便用户可以在设计期间将此 ActiveX 控件放置在一个容器(如 VB6 窗体)上时设置语言。我需要在运行时访问 ActiveX 控件/用户控件构造函数中的这个设计时属性“语言”,以便我可以将 UI 线程文化设置为适当的文化。但我的问题是我无法在运行时访问构造函数中的这个设计时属性,因为它的父级我的意思是用户控件/ActiveX 控件仍在构建中。有没有办法在运行时访问设计时属性,也可以在构造函数中访问?

【问题讨论】:

  • 由于控件是先构造然后设置属性的,所以我不会这么认为。通常,控件会响应正在设置/更改的属性并在该点运行适当的代码。
  • 这是一个非常根本的错误方法。您不能只更改线程的文化,这会影响一切,而不仅仅是您的 .NET 代码。它是线程的非托管属性。相反,文化已经设置为用户的语言。您第一次看到属性赋值的机会是在它的 setter 中。

标签: c# .net winforms


【解决方案1】:

我有一个间接的方法来解决这个问题,主要是这样的:

  1. 您可以定义一个bool 属性,假设它名为Desiging,其默认值设置为true。
  2. 您设置Designing = false,在应用程序运行时使用ActiveX。

现在,您可以在不同的模式下做一些特别的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2023-04-02
    • 1970-01-01
    • 2012-03-12
    相关资源
    最近更新 更多