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