private void ValidateItems(PopupListItem[] items) { if (items == null) { throw new NullReferenceException(); } for (var i = 0; i < items.Length; i++) { var item = items[i]; if (item.Type < PopupListItemType.Text || item.Type > PopupListItemType.Separator) { throw new ArgumentOutOfRangeException(string.Format("Items[{0}]", i), item.Type, "Not a valid PopupListItemType"); } if (item.Type != PopupListItemType.Text) { if (item.IsSelected) { throw new ArgumentException("IsSelected can only be used on Text types", string.Format("Items[{0}]", i)); } else if (item.IsDisabled) { throw new ArgumentException("IsDisabled can only be used on Text types", string.Format("Items[{0}]", i)); } } else if (item.IsSelected && item.IsDisabled) { throw new ArgumentException("IsSelected and IsDisabled cannot be used together", string.Format("Items[{0}]", i)); } } }
private void SetIndicies(PopupListItem[] items, Func<PopupListItem, bool> test, Func<IntPtr, int[], int, int> setFunc) { var indices = (from ele in items.Select((value, index) => new { value, index }) where test(ele.value) select ele.index).ToArray(); if (indices.Length > 0 && setFunc(handle, indices, indices.Length) != BPS.BPS_SUCCESS) { Util.ThrowExceptionForLastErrno(); } }