diff --git a/Terminal.Gui/Views/ListView.cs b/Terminal.Gui/Views/ListView.cs index 0e731caa2..427915866 100644 --- a/Terminal.Gui/Views/ListView.cs +++ b/Terminal.Gui/Views/ListView.cs @@ -736,14 +736,23 @@ namespace Terminal.Gui { /// public void EnsureSelectedItemVisible () { - SuperView?.LayoutSubviews (); - if (selected < top) { - top = Math.Max (selected, 0); - } else if (Frame.Height > 0 && selected >= top + Frame.Height) { - top = Math.Max (selected - Frame.Height + 1, 0); + if (SuperView?.IsInitialized == true) { + if (selected < top) { + top = Math.Max (selected, 0); + } else if (Frame.Height > 0 && selected >= top + Frame.Height) { + top = Math.Max (selected - Frame.Height + 1, 0); + } + LayoutStarted -= ListView_LayoutStarted; + } else { + LayoutStarted += ListView_LayoutStarted; } } + private void ListView_LayoutStarted (object sender, LayoutEventArgs e) + { + EnsureSelectedItemVisible (); + } + /// public override void PositionCursor () {