2

設計時にドロップされる他のコントロールのコンテナーのように機能する 6 つのパネル コントロールを含むカスタム コントロールがあります。これは、ParentControlDesign から継承するカスタム デザイナーを作成することによって行われました。デザイナーでは、EnableDesignMode を使用して、各パネル コントロールのデザイン時の機能を有効にします。問題は、コントロールを使用すると、パネルを移動できることです。設計時に移動しないようにするにはどうすればよいですか?

4

1 に答える 1

5

この問題の理想的な解決策は見つかりませんでした。部分的な解決策にすぎません。この回答のアプローチに従って、パネルのデザインモードを有効にしたと仮定します。

パネルのデザイン動作を変更するには、パネルに独自のデザイナーを指定する必要があります。これを行うサンプルクラスは次のとおりです。

using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Windows.Forms.Design;

[Designer(typeof(MyPanelDesigner))]
public class MyPanel : Panel {
    private class MyPanelDesigner : ScrollableControlDesigner {
        public override SelectionRules SelectionRules {
            get { return SelectionRules.None; }
        }
    }
}

UCのパネルをMyPanelに置き換えます。カスタムSelectionRulesプロパティにより、ユーザーはマウスを使用してパネルを別の位置に簡単にドラッグできなくなります。ただし、LocationプロパティとSizeプロパティは、プロパティグリッドで引き続き編集できます。それを取り除くには、PreFilterProperties()をオーバーライドする必要があると思います。

于 2010-10-31T19:20:33.493 に答える