| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using Sunny.UI;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using Permission;
- public class MyUiNumberInput :MyUiInput,IWithMinMaxValue
- {
- [Category("MyControl")]
- [Description("允许输入的最小值")]
- public new double Minimum { get => base.Minimum; set { base.Minimum = value; } }
- [Category("MyControl")]
- [Description("允许输入的最大值")]
- public new double Maximum { get => base.Maximum; set => base.Maximum = value; }
- [Category("MyControl")]
- [Description("限值变化时")]
- public event MinMaxValueChanged MinMaxValueChanged;
- [Category("MyControl")]
- [Description("输入的数据类型")]
- //[DefaultValue(UIEditType.Integer)]
- public new UIEditType Type { get=> type; set { base.Type = value; type = value; } }
- private UIEditType type=UIEditType.Integer;
- public MyUiNumberInput()
- {
- }
- protected override void OnCunstomClick(EventArgs e)
- {
- // 执行软键盘逻辑(由子类或当前类决定)
- if (UseSoftKeyboard)
- {
- ShowSoftKeyboard();
- }
- }
- protected virtual void OnMinMaxValueChanged(double minimum, double maximum)
- {
- MinMaxValueChanged?.Invoke(this, minimum, maximum);
- }
- protected virtual void ShowSoftKeyboard()
- {
- if (this.Type == UIEditType.Integer)
- {
- var kb = new NumberKeybordForm((int)Maximum, (int)Minimum, IntValue);
- var dr = kb.ShowDialog();
- if (dr == DialogResult.OK)
- {
- if (kb.LimitChanged)
- {
- this.Minimum = kb.Minimum;
- this.Maximum = kb.Maximum;
- OnMinMaxValueChanged(kb.Minimum, kb.Maximum);
- }
- if (kb.ValueChanged)
- {
- IntValue = Convert.ToInt32(kb.Value);
- }
- }
- }
- else if (this.Type == UIEditType.Double)
- {
- var kb = new NumberKeybordForm(Maximum, Minimum, DoubleValue);
- var dr = kb.ShowDialog();
- if (dr == DialogResult.OK)
- {
- if (kb.LimitChanged)
- {
- this.Minimum = kb.Minimum;
- this.Maximum = kb.Maximum;
- OnMinMaxValueChanged(kb.Minimum, kb.Maximum);
- }
- if (kb.ValueChanged)
- {
- DoubleValue = Convert.ToDouble(kb.Value);
- }
- }
- }
- }
- }
|