我试图在C#中创建一个CustomControl,其中包含一个Delphi TFrame,它可以从VisualStudio工具箱拖到表单上。但是,当我尝试调整控件大小时,由于TFrame未在设计模式下运行而发生错误(它试图访问框架上数据网格的事件处理程序)。
我在Delphi中创建了一个包含各种控件(数据网格、组合框等)的TFrame对象,并在C#中创建了一个包含TFrame对象的CustomControl。
为了解决这个问题,我认为我需要设置TFrame对象的Site属性,以便DesignMode为true。我该怎么做呢?
我知道我可以通过在每个方法开始时检查LicenseManager.UsageMode是否设置为DesignTime来解决这个问题,但这似乎是一个非常糟糕的解决问题的方法。因此,如果可能的话,我想得到正确的网站属性设置。
我使用的是CodeGear RAD Studio2007和Visual Studio2008。
提前感谢
发布于 2011-04-08 21:08:41
事实证明,这个问题是由Visual Studio中的一个错误引起的,在这个错误中,在构造函数或UserControl中创建的组件从不设置DesignMode和Site属性。因此,DesignMode属性始终为false。
有几种建议的解决方案,它们都涉及到向任何只应在运行时执行代码的事件处理程序或方法添加测试。第一个选项是检查LicenseManager.UsageMode属性,第二个选项是检查正在执行的进程的名称(例如,如果它是"devenv“,那么它的设计时间)。
https://stackoverflow.com/questions/5582852
复制相似问题