2

特に、ToolStripComboBox と ToolStripButton を含むツールストリップがあります。両方に ContextMenuStrip を追加したいのですが、ツールストリップやその他のコンテンツに直接アクセスできないため、ツールストリップのコンテキスト メニューを設定できません。

ToolStripComboBox の ContextMenuStrip の設定は簡単です。

myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;

しかし、ToolStripButton に相当するものはありません。ContextMenuStrip を ToolStripButton に追加するにはどうすればよいですか?

4

4 に答える 4

4

Jeff Yates が提案したことはうまくいくはずです。

ただし、別の方法として、独自の派生クラス (MyToolSTripButton、MyToolStripTextBox ... など) を作成して、これらの項目に設計時に設定できる ContextMenuStrip プロパティを与え、派生クラスにマウスの右クリックまたはその他のイベントを検出させることもできます。コンテキスト メニューの表示をトリガーします。

これにより、必要な知識はすべて、関心のある項目のみにオフロードされます。

以下は、ToolStripTextBox を項目として使用した例の 1 つです。

public class MyTextBox : ToolStripTextBox
{
    ContextMenuStrip _contextMenuStrip;

    public ContextMenuStrip ContextMenuStrip
    {
        get { return _contextMenuStrip; }
        set { _contextMenuStrip = value; }
    }

    protected override void OnMouseDown(MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            if (_contextMenuStrip !=null)
                _contextMenuStrip.Show(Parent.PointToScreen(e.Location));
        }
    }
}
于 2009-11-21T07:46:37.717 に答える
2

コンテキスト メニューを ToolStrip に設定してから、コンテキスト メニューの Popup または関連するイベントを処理し、マウスが置かれているボタンをヒット テストして、ToolStrip のコンテキスト メニューを表示するかどうか、および何を含めるかを決定する必要があります。

于 2008-11-24T18:19:35.887 に答える
0

良い質問。toolstrip親(または同様のもの)にアクセスして、myToolStripButton.Parentそこにコンテキストメニューを添付できる場合があります。

于 2008-12-09T22:24:32.017 に答える
0

これは、ToolStripComboBox には「System.Windows.Forms.ComboBox」コントロールが含まれていますが、「ToolStripButton」には「System.Windows.Forms.Control」が含まれていないためです。その特別なツールストリップ アイテムは、ツールチップによって維持されるボタンです。

ツールチップで ContextMenu を使用するか、ドロップダウンを toolstripbutton 項目に追加する必要があります。

于 2008-11-12T09:35:16.737 に答える