カスタムWinFormsコントロールのデザイナーサポートを追加しようとしていますが、ツールバーのdrag'n'drop中ではなく、インスタンスが既に作成されている場合にのみ表示されます。私は、(ユーザーが唯一のフォームにコントロールを追加することができます唯一の形式によってホストされていることにより、に私のコントロールではなくたいツールボックスからコントロールをドラッグするとControlDesignerがアクティブにならない
[Designer(typeof(MyButtonDesigner))]
public class MyButton:Button
{
public MyButton()
{
base.Size= new Size(50,50);
}
}
class MyButtonDesigner : ControlDesigner
{
public override bool CanBeParentedTo(IDesigner parentDesigner)
{
return parentDesigner != null && parentDesigner.Component is Form;
}
}
:私はデザイナーとのシンプルなコントロールを作成しました何を意味するかを表示するには
グループボックスに)。私は、ツールボックスからコントロールをドラッグすると、私の検証ロジックはスキップされますが、私は私が(下図のように)その低下が確認されて見ることができますGroupBoxの形から、私のコントロールのインスタンスを移動しようとするとされて
私はかなりよControlDesignerを初めて使用しているため、この動作が仕様であるかどうかわからない場合や、ツールボックスからドラッグしたときに検証が機能するように変更することはできますか。
私はVisual Studio 2013を使用していますが、これは問題ではないと思います。
ありがとう、私はToolboxItemクラスを使用したことはありません。 1つのこと以外はすべて正常に動作します。私がツールボックスからフォーム以外のものにアイテムをドラッグすると、(期待通りに)追加されませんが、マウスカーソルはそれでもドロップできます。カーソルを「いいえ」に変更することはできますが、これはちょっと混乱します。ユーザーはコントロールを削除できると思っていますが、実際はそれを防止しています。 – Misiu
あなたは歓迎ですが、現在解決策としてVisual Studio Errorを表示することに決めました。投稿を編集しました。 –
もう一つの回避策は 'if(host.RootComponent is Form)です。defaultValues [" Parent "] = host.RootComponent;'ドロップターゲットを 'Form'に変更します。私はエラーメッセージを表示することを好む。 –