• 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部分。
  • 相关阅读:
    关于智能本质的思考
    Effective C++ 条款39
    【视频教程】JEECG 入门视频教程大全+历史版本号代码下载
    HDU 4859(Bestcoder #1 1003)海岸线(网络流之最小割)
    最简单的基于FFMPEG的音频编码器(PCM编码为AAC)
    android经常使用的电话操作
    Vmware中为Mac Os安装vmtools
    win10.10 激活
    VM11安装Mac OS X 10.10
    win7系统升家庭版级为旗舰版的方法
  • 原文地址:https://www.cnblogs.com/jyz/p/2471910.html
Copyright © 2020-2023  润新知