/// <summary> /// Changes the height of the town's event list expando. Normally limited to 4-5 rows, when /// expanded will autosize to display all rows. (Unrelated to the Expando collapsed /// state.) /// </summary> /// <param name="expChokePoint">The Expando to modify.</param> /// <param name="expand">True to expand or update expanded height, false to collapse.</param> private void SetListExpanded(Expando expChokePoint, bool expand) { Expando expCurrentAttacks = (Expando)this.Parent; CAControls controls = (CAControls)expChokePoint.Tag; const int eventListDefaultHeight = 128; if (expand) { // remove scrollbar to get correct PreferredSize, and also to // prevent it flickering visible when adding a new events controls.dgvEventList.ScrollBars = ScrollBars.None; int offset = (EXPANDO_DEFAULT_HEIGHT - eventListDefaultHeight); int newsize = controls.dgvEventList.PreferredSize.Height + offset; if (newsize <= EXPANDO_DEFAULT_HEIGHT) { controls.dgvEventList.ScrollBars = ScrollBars.Vertical; return; } expCurrentAttacks.SuspendLayout(); expChokePoint.ExpandedHeight = newsize; expCurrentAttacks.Height += 1; // workaround for bug in tskMain ScrollableControl: expCurrentAttacks.Height -= 1; // force the correct scroll height controls.dgvEventList.Height = newsize - offset; controls.picExpandTown.Image = Resources.icon_up; expCurrentAttacks.ResumeLayout(); } else { expCurrentAttacks.SuspendLayout(); expChokePoint.ExpandedHeight = EXPANDO_DEFAULT_HEIGHT; expCurrentAttacks.Height += 1; // workaround for bug in tskMain ScrollableControl: expCurrentAttacks.Height -= 1; // force the correct scroll height controls.dgvEventList.Height = eventListDefaultHeight; controls.picExpandTown.Image = Resources.icon_down; controls.dgvEventList.ScrollBars = ScrollBars.Vertical; expCurrentAttacks.ResumeLayout(); } expCurrentAttacks.CalcAnimationHeights(); }