public void RemoveAt(int index) { owner.CheckNoDataSource(); if (index < 0 || index >= InnerArray.GetCount(0)) { throw new ArgumentOutOfRangeException(nameof(index), index, string.Format(SR.InvalidArgument, nameof(index), index)); } owner.UpdateMaxItemWidth(InnerArray.GetItem(index, 0), true); // Update InnerArray before calling NativeRemoveAt to ensure that when // SelectedIndexChanged is raised (by NativeRemoveAt), InnerArray's state matches wrapped LB state. InnerArray.RemoveAt(index); if (owner.IsHandleCreated) { owner.NativeRemoveAt(index); } owner.UpdateHorizontalExtent(); }