web-dev-qa-db-ja.com

ボタンが正しい位置でクリックされたときにコンテキストメニューストリップを表示する方法

ボタンをクリックして、ボタンのすぐ下にContextMenuStripを表示させたいのですが。 PointToScreenと上下の座標を試してみると、画面の左側に表示され続けます。

助言がありますか?

13
leora

私はそれを考え出した:

layoutMenus.Show(Cursor.Position.X, Cursor.Position.Y);
24
leora

これは古い質問ですが、他の人の役に立つかもしれないと思います。次のコードは、クリックされているボタンのすぐ下にコンテキストメニューを表示し、ボタンはドロップダウンボタンのように見えます。

private void Button1_Click(object sender, EventArgs e)
{
    Button btnSender = (Button)sender;
    Point ptLowerLeft = new Point(0, btnSender.Height);
    ptLowerLeft = btnSender.PointToScreen(ptLowerLeft);           
    ctMenuStrip.Show(ptLowerLeft);
}
39
A J Qarshi

ボタンの下のContexMenuName、ボタンの右側に配置(ボタンの下と左側に展開):ContexMenuName.Show(ButtonName, new Point(ButtonName.Width - ContexMenuName.Width, ButtonName.Height));これがsbに役立つことを願っています:)

5
saper_2

私の知る限り、あなたが必要とするコードはここにありました:

//ボタンの右側

ContextMenuName.Show(ButtonName.Left + ButtonName.Width + this.Left, ButtonName.Top + this.Top);

ボタンの下部に

ContextMenuName.Show(ButtonName.Left + this.Left, ButtonName.Top + ButtonName.Height + this.Top);

ボタンの右下

ContextMenuName.Show(ButtonName.Left + ButtonName.Width + this.Left, ButtonName.Top + ButtonName.Height + this.Top);

コンテキストメニューを配置するときに、正しい画面座標を渡すようにしてください。親のコントロールの位置に基づいてx、y、座標を使用して、Control.PointToScreenのようなものを使用する必要があります。

1
Michael Todd

ToolstripDropDownがあり、toolstripDropDownボタンをクリックした後、コンテキストメニューを表示したいと思いました。したがって、上記のコメントから、toolStripDropDown_Openiningイベントのコードを次のように変更しました。それはうまくいきます。

void toolStripDropDownButton_DropDownOpening(object sender, EventArgs e)
    {


            ToolStripDropDownButton btnSender = (ToolStripDropDownButton)sender;
            Point ptLowerRight = new Point(btnSender.Bounds.Right, btnSender.Bounds.Bottom);
            ptLowerRight = PointToScreen(ptLowerRight);
            contextMenuStrip.Show(ptLowerRight);
    }
1
Sagar
 contextMenuStrip1.Show(button1.PointToScreen(new Point(0, button1.Height)));

ボタンのすぐ下にMenuStripを表示するには

0
Osman Çelik