private void CalculatePattern() { // Horizontal PointF loc = HorizontalSlider.Position; if (loc.X > Width) loc.X = Width; int hCount = (int)Math.Ceiling(loc.X / _blockSize.Width); loc.X = hCount * _blockSize.Width; HorizontalSlider.Position = loc; List<SquareButton> newButtonsH = new List<SquareButton>(); int start = 1; if (_horizontalButtons != null) { int minLen = Math.Min(_horizontalButtons.Count, hCount-1); for (int i = 0; i < minLen; i++) { newButtonsH.Add(_horizontalButtons[i]); } start = minLen+1; } for (int j = start; j < hCount; j++) { SquareButton sq = new SquareButton(); sq.Bounds = new RectangleF(j * _blockSize.Width, 0, _blockSize.Width, _blockSize.Height); sq.ColorDownDark = _buttonDownDarkColor; sq.ColorDownLit = _buttonDownLitColor; sq.ColorUpDark = _buttonUpDarkColor; sq.ColorUpLit = _butttonUpLitColor; sq.IsDown = true; newButtonsH.Add(sq); } _horizontalButtons = newButtonsH; // Vertical loc = VerticalSlider.Position; if (loc.Y > Height) loc.Y = Height; int vCount = (int)Math.Ceiling(loc.Y / _blockSize.Height); loc.Y = (vCount) * _blockSize.Height; VerticalSlider.Position = loc; List<SquareButton> buttons = new List<SquareButton>(); start = 1; if (_verticalButtons != null) { int minLen = Math.Min(_verticalButtons.Count, vCount-1); for (int i = 0; i < minLen; i++) { buttons.Add(_verticalButtons[i]); } start = minLen+1; } for (int j = start; j < vCount; j++) { SquareButton sq = new SquareButton(); sq.Bounds = new RectangleF(0, j * _blockSize.Height, _blockSize.Width, _blockSize.Height); sq.ColorDownDark = _buttonDownDarkColor; sq.ColorDownLit = _buttonDownLitColor; sq.ColorUpDark = _buttonUpDarkColor; sq.ColorUpLit = _butttonUpLitColor; sq.IsDown = true; buttons.Add(sq); } _verticalButtons = buttons; }
/// <summary> /// Sets the vertical pattern for this control /// </summary> /// <param name="buttonPattern"></param> protected virtual void SetVerticalPattern(bool[] buttonPattern) { _verticalSlider.Position = new PointF(0, (buttonPattern.Length+1) * _blockSize.Width); _verticalButtons = new List<SquareButton>(); for (int i = 0; i < buttonPattern.Length; i++) { SquareButton sq = new SquareButton(); sq.Bounds = new RectangleF(0, (i+1) * _blockSize.Width, _blockSize.Width, _blockSize.Height); sq.ColorDownDark = _buttonDownDarkColor; sq.ColorDownLit = _buttonDownLitColor; sq.ColorUpDark = _buttonUpDarkColor; sq.ColorUpLit = _butttonUpLitColor; sq.IsDown = buttonPattern[i]; _verticalButtons.Add(sq); } }