• visual 继承当前被禁用,因为基类引用设备特定的组件或包含 p/invoke(转)


    Visual Studio(C#.net)开发Wince设备程序的时候,自定义的控件在设计时会出现如题的问题。更奇怪的问题就是一开始没有这样的问题,但对控件进行了某些功能的扩展而增加了代码,或者添加了新的控件以后,就出现了这样的问题,那么这个问题造成的原因是什么呢?又可以通过什么方法解决呢?以下摘用两段文字进行说明。

    引自MSDN http://msdn.microsoft.com/zh-cn/library/ms228851.aspx

    该消息的全文如下:

    因为基控件有设备特定的控件,所以当前禁用 Visual 继承。

    当基控件或基窗体具有设备特定的控件或组件时,托管项目中可能出现该消息。

    可以导致这种状态的情况包括以下几种:

    • 继 承窗体的父窗体或继承用户控件的父控件包含设备特定的控件。在这种情况下,无法看到继承窗体或继承用户控件的设计器。

    • 窗 体或用户控件包含设备特定的控件,此控件从另一个窗体或用户控件继承。在这种情况下,无法看到继承窗体或继承用户控件的设计器。

    • 项 目引用设备特定的程序集,如 Microsoft.WindowsCE.Forms.dll。

    • 项目或项目引用的程序集包 括平台调用。如果您能够确定不会在设计时执行平台调用,则通过将 DesktopCompatible(true) 属性放置在父窗体或父用户控件中,可以安全地启用可视继承。

    引自csdn博客 http://blog.csdn.net/sohighthesky/archive/2009/06/07/4249129.aspx

    当自定义控件所在的dll中出现了DllImport 属性时候,自定义类型的控件属性就不能正常显示在属性窗口了

    通过将 DesktopCompatible(true) 属性放置在父窗体或父用户控件中,可以安全地启用可视继承

    先在项目中添加一个“设计时属性文件”默认名为DesignTimeAttributes1.xmta

    然后在其中添加如下节点

    <Class Name="SmartDeviceProject1.Form1">  

    <DesktopCompatible>true</DesktopCompatible>  

    </Class>  

    SmartDeviceProject1.Form1为被继承的类名,要包括namespace部分。

    ok,这样应该就能解决问题了

    如果自己写的控件类,需要在设计视图中显示内容也可以通过在此文件中添加如下节点:

    <Class Name="ImageButton">  

      <DesktopCompatible>true</DesktopCompatible>  

      <Property Name="Size">  

      <DefaultValue>  

      <Type>System.Drawing.Size, System.Drawing, Version=2.0.0.0, Culture=neutralPublicKeyToken=b03f5f7f11d50a3a</Type>  

       <Value>16, 16</Value>  

      </DefaultValue>  

      </Property>  

    </Class>  

    这里ImageButton为控件的类名,要包括namespace部分。
  • 相关阅读:
    Python常用函数
    Mock测试&Postman mockserver详细教程
    openpyxl模块
    adb 'grep' 不是内部或外部命令,也不是可运行的程序或批处理文件
    Appium-Python-Windows环境搭建笔记
    调用类方法时报错:missing 1 required positional argument: 'self'
    RE正则表达式-元字符
    微分方程
    操作系统学习记录
    Mybatis基础配置
  • 原文地址:https://www.cnblogs.com/jyz/p/2471910.html
Copyright © 2020-2023  润新知