0

.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;
4

0 に答える 0