質問

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

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

myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;

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

役に立ちましたか?

解決

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

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

これにより、関心のあるアイテムのみに必要な知識がオフロードされます。

以下は、ToolStripTextBoxをアイテムとして使用する例です。

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));
        }
    }
}

他のヒント

コンテキストメニューをToolStripに設定し、コンテキストメニューまたは関連イベントのポップアップを処理して、マウスがどのボタンにあるかをテストして、ToolStripのコンテキストメニューを表示する必要があるかどうかを決定する必要があります含む。

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

ツールチップでContextMenuを使用するか、ツールストリップボタン項目にドロップダウンを追加できます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top