.net Compact Framework 3.5 を使用して Windows モバイル アプリケーション フレームワークを開発しており、基本的なカスタム コントロールを含む BaseControls プロジェクトを持っています。これらのコントロールの 1 つが「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 が 2 倍になります (つまり 220x40)。これは、QVGA デバイスの 2 倍の解像度を持つ VGA デバイス用のフレームワークを開発していることと関係があると思いますが、これを止める方法がわかりません。宛先フォームの AutoScaleMode プロパティを Dpi と None に設定しようとしましたが、効果がありませんでした。デフォルト値を実際に必要な値の半分に設定するだけで、目的のサイズにスケーリングされることに気付きましたが、これの原因と停止方法を理解したいと思います。
よろしくお願いします!
編集 次のコードは、TransparentLabel がツールボックスからフォームにドラッグされたときに、フォームのデザイナー ファイルで生成されるコードを示しています。ご覧のとおり、Size は Design Time 属性ファイルで指定した値の 2 倍です。
//
// 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;