ボタン(btnMassEdit)を左クリックしたときに表示したいContextMenuStrip(ctMenuMassEdit)があります。ContextMenuStripをボタンの上に表示したい、つまりボタンに対する相対的な位置(0、-ContextMenuStrip.Height):
private void btnMassEdit_Click(object sender, EventArgs e)
{
ctMenuMassEdit.Show(btnMassEdit, new Point(0, -ctMenuMassEdit.Height));
}
ただし、ボタンが最初にクリックされたときのHeightプロパティは0であり(最初に表示される前にContextMenuStripが作成されていないと思います)、その結果、ContextMenuStripがボタンの上に表示されます。ただし、2回目にボタンをクリックすると、正しい位置に表示されるため、ロジックの基本は少なくとも正しいです。
ContextMenuStripを表示する前に以下を追加しようとしましたが、期待どおりに機能しませんでした。
if (!ctMenuMassEdit.Created)
{
ctMenuMassEdit.CreateControl();
}
それで、最初に表示する前にContextMenuStripを作成する方法はありますか?それで、正しいHeightプロパティがありますか?もちろん、それを表示し、非表示にして、もう一度表示するというハックを使用することもできますが、それは本当にきれいではないようです...