private void RefreshControlsMeal() { splitContainer3.Panel2.Controls.Clear(); MealsCount = 0; int index = List_Indexator.ReturnTodaysMealIndex(ActiveProfile.List_Of_meals); // int index = ActiveProfile.List_Of_meals.FindIndex(x => x.Date.Date == DateTime.Today); foreach (Meal meal in ActiveProfile.List_Of_meals[index].Meals) { MealPanel_Control p = new MealPanel_Control(meal.MealName); foreach (Product_Mass product in meal.Products) { ProductInMeal_Control t = new ProductInMeal_Control(product); p.AddProductToMealControl(t); t.RemoveProduct_Button.Click += new EventHandler(RemoveControlMeal); } p.Location = new Point(50, 15 + (MealsCount * 47)); MealsCount++; splitContainer3.Panel2.Controls.Add(p); p.BringToFront(); p.Expand_Button.Click += new EventHandler(ExpandMeal); } }
private void ExpandMeal(object sender, EventArgs e) { MealPanel_Control prevPanel = new MealPanel_Control(); bool IsSearched = false; bool IsSearchedFirst = false; List <MealPanel_Control> list = new List <MealPanel_Control>(); foreach (MealPanel_Control mp in splitContainer3.Panel2.Controls) { list.Add(mp); } IEnumerable <MealPanel_Control> panels = list.OrderBy(panel => panel.Top); // sortowanie wedlug polozenia list = panels.ToList(); foreach (MealPanel_Control mp in list) { if ((sender as MetroButton).Parent.Parent.Parent == mp) { // znaleziony klikniety panel prevPanel = mp; IsSearched = true; int index = list.IndexOf(mp) + 1; if (index < list.Count) // jesli nie jest to ostatni panel { if (mp.ISCollapsed) { list[index].Top = mp.Top + 47; } else { list[index].Top = mp.Bottom; } prevPanel = list[index]; IsSearchedFirst = true; continue; } else { continue; } } if (IsSearchedFirst) // pominiecie pierwszego panelu { IsSearchedFirst = false; continue; } if (IsSearched) //reszta paneli { if (prevPanel.ISCollapsed) { mp.Top = prevPanel.Top + 47; } else { mp.Top = prevPanel.Bottom; } mp.BringToFront(); prevPanel = mp; } } }