设计时属性文件:默认控件大小加倍

时间:2013-10-31 20:50:54

标签: c# .net windows-mobile

我正在使用.net Compact Framework 3.5开发一个Windows移动应用程序框架,并且有一个包含基本自定义控件的BaseControls项目。其中一个控件是“TransparentLabel”。由于.net CF消除了很多设计时属性的功能,我必须使用DesignTimeAttributes.xmta文件来指定我的控件属性的默认值。

为我的控件设置默认大小时出现问题。以我的TransparentLabel为例。我使用以下方法设置默认值:

<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
  <Class Name="BaseControls.TransparentLabel">
    <DesktopCompatible>true</DesktopCompatible>
    <ApplyDeviceDefaults>
      <PropertyName>Size</PropertyName>
      <ApplyDefaults>false</ApplyDefaults>
    </ApplyDeviceDefaults>
    <Property Name="Size">
      <DefaultValue>
        <Type>System.Drawing.Size, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Type>
        <Value>110, 20</Value>
      </DefaultValue>
    </Property>
  </Class>
  <Class Name="BaseControls.TransparentControlBase">
    <DesktopCompatible>true</DesktopCompatible>
  </Class>
</Classes>

但是,当我将TransparentLabel实例拖放到窗体上时,Size会加倍(即220x40)。我认为这与我正在开发VGA设备框架的事实有关,这个设备的分辨率是QVGA设备的两倍,但我不知道如何阻止它。我已经尝试将目标表单上的AutoScaleMode属性设置为Dpi和None,这没有任何效果。现在我意识到我可以将默认值设置为我实际想要的一半,并且它将缩放到所需的大小,但我想了解是什么导致了这个以及如何阻止它。

提前多多谢谢!

修改 以下代码显示将TransparentLabel从工具箱拖到窗体上时窗体的设计器文件中生成的代码。正如您所看到的,Size是我在Design Time属性文件中指定的两倍。

        // 
        // transparentLabel1
        // 
        this.transparentLabel1.Location = new System.Drawing.Point(100, 178);
        this.transparentLabel1.Name = "transparentLabel1";
        this.transparentLabel1.Size = new System.Drawing.Size(220, 40);
        this.transparentLabel1.TabIndex = 17;
        this.transparentLabel1.Text = "transparentLabel1";
        this.transparentLabel1.TextAlign = System.Drawing.ContentAlignment.TopLeft;

0 个答案:

没有答案