ボタンをクリックして、ボタンのすぐ下にContextMenuStrip
を表示させたいのですが。 PointToScreen
と上下の座標を試してみると、画面の左側に表示され続けます。
助言がありますか?
私はそれを考え出した:
layoutMenus.Show(Cursor.Position.X, Cursor.Position.Y);
これは古い質問ですが、他の人の役に立つかもしれないと思います。次のコードは、クリックされているボタンのすぐ下にコンテキストメニューを表示し、ボタンはドロップダウンボタンのように見えます。
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);
}
ボタンの下のContexMenuName、ボタンの右側に配置(ボタンの下と左側に展開):ContexMenuName.Show(ButtonName, new Point(ButtonName.Width - ContexMenuName.Width, ButtonName.Height));
これがsbに役立つことを願っています:)
私の知る限り、あなたが必要とするコードはここにありました:
//ボタンの右側
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のようなものを使用する必要があります。
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);
}
contextMenuStrip1.Show(button1.PointToScreen(new Point(0, button1.Height)));
ボタンのすぐ下にMenuStripを表示するには