// Generates the buttons for the different types of MenuItems private void PopulateMenuItemTypes() { menuItemTypeButtons.Controls.Clear(); menuItemTypeButtons.RowStyles.Clear(); List <Model.MenuItem> menuItems = menu.Items; List <Model.MenuItem> drinks = menuItemService.GetDrinks(); menuItems.AddRange(drinks); Dictionary <string, List <Model.MenuItem> > categories = new Dictionary <string, List <Model.MenuItem> >(); foreach (Model.MenuItem menuItem in menu.Items) { if (!categories.ContainsKey(menuItem.Subtype)) { categories.Add(menuItem.Subtype, new List <Model.MenuItem>()); } categories[menuItem.Subtype].Add(menuItem); } int numberOfRows = (int)Math.Ceiling((decimal)categories.Count / 3); float percentagePerRow = 100 / numberOfRows; menuItemTypeButtons.RowCount = numberOfRows; foreach (KeyValuePair <string, List <Model.MenuItem> > category in categories) { menuItemTypeButtons.RowStyles.Add(new RowStyle(SizeType.Percent, percentagePerRow)); menuItemTypeButtons.Controls.Add(GenerateCategoryButton(category.Value)); } }