public void PickColor(byte selectedColorId, string headerText, List <ArkColor> naturalColors = null, byte selectedColorIdAlternative = 0) { label1.Text = headerText; var colors = values.Values.V.Colors.colorsList; SelectedColorId = selectedColorId; SelectedColorIdAlternative = selectedColorIdAlternative; _naturalColorIDs = naturalColors?.Select(ac => ac.Id).ToArray(); checkBoxOnlyNatural.Visible = _naturalColorIDs != null; if (_naturalColorIDs == null) { checkBoxOnlyNatural.Checked = true; } flowLayoutPanel1.SuspendLayout(); for (int colorIndex = 1; colorIndex < colors.Count; colorIndex++) { int controlIndex = colorIndex - 1; if (flowLayoutPanel1.Controls.Count <= controlIndex) { var np = new NoPaddingButton { Width = 44, Height = 24, Margin = new Padding(0) }; np.Click += ColorChosen; flowLayoutPanel1.Controls.Add(np); } if (flowLayoutPanel1.Controls[controlIndex] is NoPaddingButton bt) { bt.Visible = ColorVisible(colors[colorIndex].Id); bt.Selected = SelectedColorId == colors[colorIndex].Id; bt.SelectedAlternative = SelectedColorIdAlternative == colors[colorIndex].Id; bt.SetBackColorAndAccordingForeColor(colors[colorIndex].Color); bt.Tag = colors[colorIndex].Id; bt.Text = colors[colorIndex].Id.ToString(); _tt.SetToolTip(bt, colors[colorIndex].Id + ": " + colors[colorIndex].Name); } } flowLayoutPanel1.ResumeLayout(); isShown = true; }
public RegionColorChooser() { InitializeComponent(); _buttonColors = new NoPaddingButton[Species.ColorRegionCount]; for (int i = 0; i < Species.ColorRegionCount; i++) { var b = new NoPaddingButton { Width = 27, Height = 27, Margin = new Padding(1), Text = i.ToString() }; var ii = i; b.Click += (s, e) => ChooseColor(ii, b); _buttonColors[i] = b; flowLayoutPanel1.Controls.Add(b); } _selectedRegionColorIds = new byte[Species.ColorRegionCount]; _selectedColorIdsAlternative = new byte[Species.ColorRegionCount]; ColorRegionsUseds = new bool[Species.ColorRegionCount]; _colorPicker = new MyColorPicker(); _tt.AutoPopDelay = 7000; Disposed += RegionColorChooser_Disposed; }