ContextMenuStrip に 10 個ほどの項目があります。10 個の項目のうちどれを表示するかを決定する Opening Event ハンドラがあります。アプリケーション ロジックに基づいて、Visible = false および Enabled = false に設定することで、それらの多くを非表示にすることができます。
6/10が表示されている場合です。ストリップを初めてクリックすると、領域 4 メニュー項目の高さが空白になります。右クリックして2回目に表示させると、本来あるべき場所に表示されます。したがって、ストリップは基本的に、実際には 6 アイテムのストリップであるにもかかわらず、10 アイテムのストリップに対して計算された位置を持っています。
強制的に再計算するにはどうすればよいですか?
ここに私が試したことのいくつかがあります:
contextMenuStrip1.Refresh();
contextMenuStrip1.Update();
contextMenuStrip1.PerformLayout();
contextMenuStrip1.AutoSize = true;
ToolStripItem tempItem = contextMenuStrip1.Items.Add("temp");
contextMenuStrip1.Items.Remove(tempItem);
contextMenuStrip1.Refresh();
contextMenuStrip1.Update();
contextMenuStrip1.Invalidate();