ボタンをクリックしてボタンのすぐ下にコンテキストメニストを表示したいとします。私はpointtoacreenと上と左の座標を試してみると、画面の左側に表示され続けます。ボタンが正しい位置でクリックされたときにcontextmenustripを表示する方法
任意の提案
ボタンをクリックしてボタンのすぐ下にコンテキストメニストを表示したいとします。私はpointtoacreenと上と左の座標を試してみると、画面の左側に表示され続けます。ボタンが正しい位置でクリックされたときにcontextmenustripを表示する方法
任意の提案
私はそれを考え出した:
layoutMenus.Show(Cursor.Position.X, Cursor.Position.Y);
ていることを確認してください、あなたはそれを正しいスクリーン座標を通過し、コンテキストメニューを配置しているとき。 Control.PointToScreenのようなものを、親のコントロールの位置に基づいてx、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);
}
これはあなたのソリューションで探している動作です!私は、保護オーバーライドOnMouseClick(DataGridViewCellMouseEventArgs e)内でそれを行う方法を把握できません...私は、DataGridViewCellのすぐ下にContextMenuStripを配置しようとしています。 –
@ D.Allen:.NETのDataGridViewクラスについて話していて、DataGridViewから継承したクラスのOnCellMouseClickイベントをオーバーライドしているようです。もしそうなら、正確に何をしたいのかを記述してください。私は、DataGridViewCellMouseEventArgsオブジェクトから位置、X/Y座標を取得できると思います。 –
このソリューションは、タスクバーの近くにボタンを配置し、コンテキストメニューストリップを表示するためのボタンをクリックするエッジケースをカバーしていません。メニューストリップは、オーバーフローのためにボタンを隠すことがありますが、 '期待される'動作はメニューを反転してからボタンの上に移動する必要があります。しかし、そのようなフリップを達成する簡単な方法はありません。 –
簡単な方法
contextMenuStrip1.Show(Button1を、 Button1.PointToClient(Cursor.Position));
まったく仕事。 –
は、私の知る限りでは、必要なコードはここにあった:
//ボタン
ContextMenuName.Show(ButtonName.Left + this.Left, ButtonName.Top + ButtonName.Height + this.Top);
の下部にあるボタン
ContextMenuName.Show(ButtonName.Left + ButtonName.Width + this.Left, ButtonName.Top + this.Top);
の右側にボタンの右下に
ContextMenuName.Show(ButtonName.Left + ButtonName.Width + this.Left, ButtonName.Top + ButtonName.Height + this.Top);
「ここ」とは何ですか?フォーム自体を意味しますか?計算が機能せず、メニューが予期しない場所に表示されます。 –
私は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);
}
ボタンの右側に並ぶボタンの下ContexMenuName、(ボタンの下に、左に展開): ContexMenuName.Show(ButtonName, new Point(ButtonName.Width - ContexMenuName.Width, ButtonName.Height));
希望これはSBを助ける:)
私は@ saper_2ソリューションを使用しています。 –
厳密にこれが答えではない、言えば、質問に。これは、ボタンのすぐ下のポイントではなく、ポインタの位置にコンテキストメニューを表示します。 –
私はここにきて、これを正確に探しました。ありがとうございました!! –
ContextMenu.Show()メソッドにはいくつかのオーバーロードがあります。あなたの場合、良い解決策はこれでしょう。 'layoutMenus.Show(Button1、new Point(0、Button1.Height))' – AeonOfTime