public ClusterControlDetailed(MainForm form, Cluster cluster) { if (cluster == null) throw new ArgumentNullException(nameof(cluster)); this.Form = form; InitializeComponent(); const int padding = 2; // Abstand zwischen zwei StepperControls int height = 0; steppers = new StepperControl[Cluster.Width * Cluster.Height]; // im folgenden wird über X und Y Koordinaten eine Tabelle erzeugt for (int y = 0; y < Cluster.Height; y++) { Label labelRow = new Label(); labelRow.Text = (Cluster.Height - y).ToString(); labelRow.AutoSize = true; steppersPanel.Controls.Add(labelRow); for (int x = 0; x < Cluster.Width; x++) { StepperControl stepper = new StepperControl(cluster.GetStepperByPosition(x, Cluster.Height - 1 - y)); steppersPanel.Controls.Add(stepper); steppers[y * Cluster.Width + x] = stepper; Label labelColumn = new Label(); labelColumn.Text = (x + 1).ToString(); labelColumn.AutoSize = true; steppersPanel.Controls.Add(labelColumn); labelColumn.Location = new Point(x * (stepper.Width + padding) + labelRow.Width + stepper.Width / 2 - labelColumn.Width / 2, 0); stepper.Location = new Point(x * (stepper.Width + padding) + labelRow.Width, y * (stepper.Height + padding) + labelColumn.Height); stepper.Click += (sender, e) => { ShowStepper((StepperControl)sender); }; height = stepper.Height + padding; } labelRow.Location = new Point(0, y * height + height / 2 - labelRow.Height / 2); } ShowCluster(cluster); }
private void ShowStepper(StepperControl stepper) { // Hintergrund-Farbe von Stepper rückgängig machen if (selectedStepper != null) selectedStepper.BackColor = SystemColors.Control; selectedStepper = stepper; if (selectedStepper != null) { stepperBox.Visible = true; stepperBox.Text = string.Format(Properties.Resources.StepperInfo, selectedStepper.Stepper.X + 1, selectedStepper.Stepper.Y + 1); selectedStepper.BackColor = SystemColors.Highlight; } else stepperBox.Visible = false; }