У меня есть ContextMenuStrip (ctMenuMassEdit), который я хочу отобразить при щелчке левой кнопкой мыши по кнопке (btnMassEdit). Я хочу, чтобы ContextMenuStrip отображался над кнопкой, то есть позиция (0, -ContextMenuStrip.Height) относительно кнопки:
private void btnMassEdit_Click(object sender, EventArgs e)
{
ctMenuMassEdit.Show(btnMassEdit, new Point(0, -ctMenuMassEdit.Height));
}
Однако свойство Высота равно 0 при первом нажатии кнопки (я предполагаю, что ContextMenuStrip не создается до того, как он отображается в первый раз), и в результате этого ContextMenuStrip появляется в верхней части кнопки. Однако, когда я нажимаю кнопку 2 раза, она появляется в правильном положении, поэтому базовая логика, по крайней мере, правильна.
Я попытался добавить следующее перед показом ContextMenuStrip, но это не сработало, как мы надеялись:
if (!ctMenuMassEdit.Created)
{
ctMenuMassEdit.CreateControl();
}
Итак, есть ли способ, которым я могу создать ContextMenuStrip перед его первым показом, чтобы у меня было правильное свойство Height? Я, конечно, мог бы использовать взлом, чтобы показать это, скрыть и показать снова, но это не кажется действительно опрятным ...