1

Visual Studio の .NETCF Windows モバイル プロジェクトでカスタム (継承された) コントロールを表示する際に問題があります。コントロールは、クラス名が書かれた灰色のボックスとしてデザイナー画面に表示されます。

テストケースとして、次のように定義された単純なコントロールがあります。

public class ucButton2 : Button
{
}

ボタンのようにする必要がありますが、おかしな動作をします。

過去に、この問題または同様の問題を設計時属性ファイルで解決しました。そのため、次の内容のファイル DTA.xmta を含めました。

<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
  <Class Name="MyProject.CustomControls.ucButton2">
    <Description>Testbutton</Description>
    <DesktopCompatible>true</DesktopCompatible>
  </Class>
</Classes>

ここで、事態は本当に奇妙になります。関連のない型指定されたデータ セット ファイルの genasm.exe からコンパイル エラーが発生し始めます。

この投稿の最後のコメントからのアドバイスに従ってください: http://www.simonrhart.com/2008/02/upgrading-your-solutions-to-visual.html

「埋め込みリソース」のビルド アクションを持つように DTA.xmta を変更しました。

これでアプリはコンパイルされますが、何も変更されていません。デザイナー サーフェイスには、クラス名の空のボックスが表示されたままです。

奇妙なキャッシュが発生していないことを確認するために、Visual Studio を閉じてから再度開きました。同じ動作です。

私が言ったように、過去に xmta ファイルはこの種の問題を解決しました。しかし、今回はそうではありませんでした。しかし同時に、以前は、xmta ファイルを追加しても、コンパイル時に genasm.exe が barf することはありませんでした。私の他のプロジェクトでは、私の xmta ファイルには、「埋め込みリソース」ではなく「なし」のビルド アクションがあります。

実行時には、すべて正常に動作します。これは純粋に設計時の問題です。どんな助けでも大歓迎です。

4

2 に答える 2

1

DesktopCompatible(true) をカスタム属性としてコントロールに追加すると思います。参照:この投稿

于 2011-06-16T13:34:16.390 に答える
0

これは、スマート デバイス コントロール デザイナーが視覚的な継承をサポートしていないためです。コードの欠陥によるものであろうと設計によるものであろうと、デスクトップ .NET コントロール デザイナーのようには機能しません。表示される場合と表示されない場合があります。

ただし、カスタム コントロール コードは引き続き機能しますが、常に期待どおりに表示されるとは限りません。

于 2009-11-13T23:48:58.973 に答える