private void numEntry_EntryChanged(object sender, EventArgs e) { NumberEntry entry = sender as NumberEntry; if (this.CurrentValue != entry.CurrentValue) { this.CurrentValue = entry.CurrentValue; OnValueChanged(); } }
protected internal override void OnSettingUp() { base.OnSettingUp(); if (!string.IsNullOrEmpty(Label)) { _labelRect = new Rectangle(new Point(1, 1), new Point(Label.Length + 1, 1)); _upButtonPos = new Point(Label.Length + 2, 1) + ScreenPosition; } else _upButtonPos = Point.One + ScreenPosition; int fieldWidth = NumberEntryTemplate.CalculateFieldWidth(MaximumValue, MinimumValue); Size fieldSize = new Size(fieldWidth, 1); _fieldRect = new Rectangle(_upButtonPos.Shift(2, 0), fieldSize); _downButtonPos = _fieldRect.TopRight; _numEntry = new NumberEntry(new NumberEntryTemplate() { HasFrameBorder = false, MinimumValue = this.MinimumValue, MaximumValue = this.MaximumValue, StartingValue = CurrentValue, CommitOnLostFocus = true, ReplaceOnFirstKey = true, TopLeftPos = _fieldRect.TopLeft }); _upButton = new EmitterButton(new EmitterButtonTemplate() { HasFrameBorder = false, Label = ((char) libtcod.TCODSpecialCharacter.ArrowNorthNoTail).ToString(), TopLeftPos = _upButtonPos, StartEmittingDelay = SpinDelay, Speed = SpinSpeed }); _downButton = new EmitterButton(new EmitterButtonTemplate() { HasFrameBorder = false, Label = ((char) libtcod.TCODSpecialCharacter.ArrowSouthNoTail).ToString(), TopLeftPos = _downButtonPos, StartEmittingDelay = SpinDelay, Speed = SpinSpeed }); _upButton.Emit += upButton_Emit; _downButton.Emit += downButton_Emit; _numEntry.EntryChanged += numEntry_EntryChanged; }
/// <summary> /// Creates the NumberEntry and ValueBar for this slider. /// </summary> protected internal override void OnSettingUp() { base.OnSettingUp(); Point fieldPos; if (HasFrame) { if (!string.IsNullOrEmpty(Label)) { _labelRect = new Rectangle(new Point(1, 1), new Point(Label.Length + 1, 1)); fieldPos = new Point(Label.Length + 2, 1); } else { fieldPos = new Point(1, 1); } } else { if (!string.IsNullOrEmpty(Label)) { _labelRect = new Rectangle(new Point(0, 0), new Point(Label.Length + 1, 1)); fieldPos = new Point(Label.Length + 2, 0); } else { fieldPos = new Point(0, 0); } } int fieldWidth = NumberEntryTemplate.CalculateFieldWidth(MaximumValue, MinimumValue); Size fieldSize = new Size(fieldWidth, 1); _fieldRect = new Rectangle(fieldPos, fieldSize); if (BarPigment == null) { BarPigment = DetermineMainPigment(); } _numEntry = new NumberEntry(new NumberEntryTemplate() { HasFrameBorder = false, MinimumValue = this.MinimumValue, MaximumValue = this.MaximumValue, StartingValue = CurrentValue, CommitOnLostFocus = true, ReplaceOnFirstKey = true, CanHaveKeyboardFocus = true, TopLeftPos = this.LocalToScreen(_fieldRect.TopLeft) }); int w = 0, h = 0; if (ShowLabel) { h++; } if (HasFrame) { h++; w++; } _valueBar = new ValueBar(new ValueBarTemplate() { TopLeftPos = this.LocalToScreen(new Point(w, h)), Length = this.Size.Width - (HasFrame ? 4 : 2), MaximumValue = this.MaximumValue, MinimumValue = this.MinimumValue, StartingValue = this.CurrentValue, BarPigment = this.BarPigment }); _leftButton = new EmitterButton(new EmitterButtonTemplate() { HasFrameBorder = false, Label = "-", TopLeftPos = this.LocalToScreen(new Point(w, h)), StartEmittingDelay = SpinDelay, Speed = SpinSpeed }); _rightButton = new EmitterButton(new EmitterButtonTemplate() { HasFrameBorder = false, Label = "+", TopLeftPos = this.LocalToScreen(new Point(w, h).Shift(Size.Width - (HasFrame ? 3 : 1), 0)), StartEmittingDelay = SpinDelay, Speed = SpinSpeed }); _numEntry.EntryChanged += numEntry_EntryChanged; _valueBar.MouseMoved += valueBar_MouseMoved; _valueBar.MouseButtonDown += valueBar_MouseButtonDown; _leftButton.Emit += leftButton_Emit; _rightButton.Emit += rightButton_Emit; }