none
デザイナー上でFormコントロールの移動ボタンの表示方法 RRS feed

  • 質問

  • Panel や GroupBoxでは左上に十字矢印で移動ボタンが出現します。
    これをユーザーコントロールやカスタムコントロールでも表示したいのですがどのような設定が必要なのでしょうか。

    2015年2月25日 1:27

回答

  • UserControl派生クラスでは既定で表示されませんか?

    // Visual Studio Community 2013 / .NET 4.5 / C#で確認。

    またこの移動ボタンを表示させる理由は、コンテナコントロール上でドラッグ開始で移動しようとすると、

    • コンテナコントロール自身の移動
    • 子要素の範囲選択
    • (子要素の移動)

    のいずれなのかの意図が区別できない、という点からコンテナコントロール自身の移動を明示するためであると思われます。

    ですので、一般的なカスタムコントロール=非コンテナコントロールにおいては、TextBoxなどと同様に直接コントロール上でドラッグ開始というので問題無いのではないでしょうか。一応、該当コントロールのDesitner属性でParentControlDesignerクラス(やその派生クラス)を指定してやればコンテナコントロール風の挙動を取らせることができますが。

    • 回答としてマーク kitunechan 2015年2月25日 3:21
    2015年2月25日 2:06

すべての返信

  • UserControl派生クラスでは既定で表示されませんか?

    // Visual Studio Community 2013 / .NET 4.5 / C#で確認。

    またこの移動ボタンを表示させる理由は、コンテナコントロール上でドラッグ開始で移動しようとすると、

    • コンテナコントロール自身の移動
    • 子要素の範囲選択
    • (子要素の移動)

    のいずれなのかの意図が区別できない、という点からコンテナコントロール自身の移動を明示するためであると思われます。

    ですので、一般的なカスタムコントロール=非コンテナコントロールにおいては、TextBoxなどと同様に直接コントロール上でドラッグ開始というので問題無いのではないでしょうか。一応、該当コントロールのDesitner属性でParentControlDesignerクラス(やその派生クラス)を指定してやればコンテナコントロール風の挙動を取らせることができますが。

    • 回答としてマーク kitunechan 2015年2月25日 3:21
    2015年2月25日 2:06
  • UserControl派生クラスで表示されていませんでした
    // Microsoft Visual Studio Professional 2013 / .NET 4.5

    [Designer(typeof(ParentControlDesigner))]
    を追加することで解決しました。

    ありがとうございました。

    2015年2月25日 3:29