/// <summary> /// Display dialog to allow user to select a category item from specified category. /// </summary> /// <param name="sheet"></param> /// <param name="categoryName"></param> /// <param name="instructions"></param> /// <param name="defaultSelectedIndex"></param> /// <param name="useCategorySelectedItemIndex"></param> /// <returns></returns> public static CategoryItem SelectCategoryItem(Sheet sheet, String categoryName, String instructions, Int32 defaultSelectedIndex, Boolean useCategorySelectedItemIndex) { CategoryItem returnValue = default(CategoryItem); Category category = default(Category); String categoryItemName = default(String); try { //User must select a Category Item. // Display the form as a modal dialog box. SelectDialog dialog = new SelectDialog(); //set dialog icon dialog.Icon = MultiDimensionalSpreadsheetLibrary.Properties.Resources.MultiDimensionalSpreadsheet; //set dialog title dialog.Text = "Select a Category Item"; //set instructions dialog.lblInstructions.Text = instructions; //set category name category = sheet.Categories.Find(c => c.Name == categoryName); dialog.lblCategoryName.Text = category.Name; // Add category items to the listbox dialog.ddlCategoryItems.DataSource = category.Items; dialog.ddlCategoryItems.DisplayMember = "Name"; dialog.ddlCategoryItems.ValueMember = "Name"; //pre-set selection if (useCategorySelectedItemIndex) { dialog.ddlCategoryItems.SelectedIndex = category.SelectedItemIndex; } else if (defaultSelectedIndex != -1) { dialog.ddlCategoryItems.SelectedIndex = defaultSelectedIndex; } //show dialog; dialog.ShowDialog(); // Determine if the OK button was clicked on the dialog box. if (dialog.DialogResult == DialogResult.OK) { categoryItemName = ((CategoryItem)dialog.ddlCategoryItems.SelectedItem).Name; dialog.Dispose(); returnValue = category.Items.Find(ci => ci.Name == categoryItemName); } else { dialog.Dispose(); } } catch (Exception ex) { Log.Write(ex, MethodBase.GetCurrentMethod(), EventLogEntryType.Error); throw; } return(returnValue); }