0

私は Visual Studio 2010、C#、および WinForms を使用しており、次のようなカスタム コンポーネントを作成しました。

public partial class SlidePanel : Panel 
{
    some code here...
}

したがって、これはユーザー コントロールではなくコンポーネント クラスです。

私が欲しいのは、コンポーネントをウィンドウフォームにドラッグして、フォームの下にあるコンポーネントを表すアイコンを取得するときです。例として、既存のバインディング ソース コントロールがあります。それをフォームに追加すると、(フォーム デザイナーの) フォームの下にアイコンが表示され、それを選択してプロパティを変更できます。これどうやってするの?アイコンは一般的なものにすることができます。

4

2 に答える 2

0

したがって、これはユーザー コントロールではなくコンポーネント クラスです。

いいえ、どちらでもありません。これはまだパネル コントロールです。動作をカスタマイズしただけです。このクラスがソリューションのプロジェクトにある場合、コンパイル後にツールボックスに自動的に追加されます。上部、矢印の直後。それが起こらない場合は、設定が間違っています。[ツール] + [オプション]、[Windows フォーム デザイナー]、[全般] で、AutoToolboxPopulate が True に設定されていることを確認します。

説明した内容 (下部に追加されたアイコン) が実際に必要な場合は、Component から派生するクラスを作成する必要があります。これは非常に異なる種類の動物であり、フォーム上で視覚的に表現することはできません. 確かに、パネルのようなものには似ていません。例については、この回答を参照してください。

于 2012-07-28T19:59:08.077 に答える
0

これが非常に遅いことはわかっていますが、同じ質問を読んでいて、これが私の興味を引きました。ここであなたがやろうとしているのは、デザイナーで縮小できるコントロールをフォームに置くことだと思います。結果として、これによりコントロールがフォームから消えます。フォームの下にコンポーネントを配置すると、コンポーネントを選択してプロパティを編集できます。

私の考えは、ControlDesignerを試していました。これが機能するかどうかはわかりませんが、簡単な解決策ではなく、現時点では作業する時間がありませんが、ここに行く方法は 2 つあります。

1 つ: ControlDesiger ではプロパティをシャドウできるため、デザイナーでそれらを設定しても効果がありません。これが、非表示に設定したコントロールがデザイナーで表示されたままになる理由です。シャドウ プロパティは効果がないか、指定した効果がありますが、シリアル化されたときに実際のプロパティを更新します。

2: コントロール デザイナでコンポーネントを動的に作成し、パネルから派生したコントロールを追加するときに、それをフォームに追加できる場合があります。次に、コンポーネントにプロパティを設定すると、この変更をコントロールに反映できます。私は数年前に時間を無駄にするために同様のことをしましたが、実際にそれを正しく機能させるために多くの時間を費やしていなかったので、起こらないかもしれません.

ほんの少しの考え

ダニーハット

于 2017-03-18T01:07:39.900 に答える