0

デフォルトのContextMenuStripにはボタンしか含めることができず、コントロールを含めることができないため、かなり制限されているように感じます。それは長い間疑問に思っていたので、フォームを使ってすでに試しましたが、実際にはうまくいきませんでした。

イベントやアイテムを使って、すべてをどのように設定するかについては、すでに考えています。私が抱えている唯一の問題は、ペイント方法です。ContextMenu(ContextMenuStrip)を開くと、マウスカーソル上でその位置を設定でき、アクティブなフォームを超えている場合でも、そこに表示されます。(したがって、コントロールクラスはフォームの一部としてしか描画できないため、継承として使用できません。ここで、フォームクラスをコンテキストメニューのベースとして使用することを考えましたが、画面上にランダムに配置されています。

したがって、実際に必要なのは、問題なく描画でき、画面に正確に配置できるクラス(または同様のもの)です。

どんなヒントでもいいでしょう、ありがとう。

グレッグ・ザ・マッド

4

2 に答える 2

2

最初のステートメントはfalseです。ContextMenuStripにTextBoxまたはComboBoxを含めることができます。

MSDN ToolStripComboBox
MSDN ToolStripTextBox

デザイナーから、マウスが[ここに入力]ボックス(クリックしにくい場合があります)にあるときに小さなドロップダウン矢印が表示され、タイプを変更できます。

于 2009-12-09T16:10:42.667 に答える
1

コンテナ内で任意のタイプのコントロールをトップダウン方式で表示して配置できるようにする場合は、FlowLayoutPanelを使用していつでもカスタムコントロールを作成できます。プロパティFlowDirection=TopDownおよびWrapContents=Falseを使用して、垂直方向のアプローチを維持します。これは「メニュー」の基本を処理し、新しいコントロールは各コントロールから希望するイベントを公開できます。パネルを表示し、そのLocationプロパティを使用して配置するロジックも処理する必要があります。

親フォームの外に描画する際の問題に対処するのを忘れました。ContextMenusはスマートであり、親の境界に達すると、親の境界から離れることに注意してください。マウスを右クリックするだけで、論理的に正しい方向(上/下または左/右)に描画できるはずです。フォームを使用する場合は、StartPosition = Manualを設定し、Show()またはShowDialog()を呼び出す前に、MouseClickのイベント引数で提供されるXおよびYパラメーターに対応するLocationプロパティを設定します。

于 2009-12-09T17:15:22.700 に答える