0

分割パネルのパネルのように、(この問題とは関係のないさまざまな理由で) デザイナーに公開されている Windows フォーム ユーザー コントロールがあります。コントロールをドラッグすることを除いて、ほとんどすべてがうまく機能します。子コントロールはユーザー コントロールによって作成され、新しい子を受け入れません。その意図は、定義済みの子のプロパティを編集できるようにすることだけです。

コントロールでは子コントロールを設計できるため、デザイナーで子コントロールを選択することもできます (これは良いことであり、これを変更したくありません)。ただし、個別に移動することはできません。

私がやりたいことは、デザイナーで子コントロールをドラッグすると、ドラッグによって実際に親が移動することです。

私はコントロール デザイナーに関するドキュメントをざっと読んでいますが、単純で明白なものは何も表示されませんでした。

4

1 に答える 1

0

これを試して、何が起こるか教えてください:

  1. UserControlクラスを拡張する
  2. デフォルトのUserControlデザイナクラスから派生した新しいControlDesignerクラスを定義します(UserControlDocumentDesignerだと思います)
  3. このデザイナ内で、initializeメソッドのオーバーライド内にこれを記述します。

    IComponentChangeService changeService = this.GetService(typeof(IComponentChangeService)); changeService.ComponentRemoved + = new ComponentEventHandler(changeService_ComponentRemoved);

これで、コントロールが削除されたときに何が起こるかについてロジックを配置できます。ユーザーコントロールから削除されたコントロールだけでなく、このイベントが発生することに注意してください。これを確認する必要があります。また、設計時にthinkが正常に機能するようにするには、ComponentChangingイベントとComponentChangedイベントを忘れないでください。

于 2009-12-18T10:43:32.997 に答える