【WinForm UI控件系列】NumberBox 数字输入框控件,支持最小最大值支持鼠标滚轮支持前缀后缀文本

NumberBox 是一个功能丰富的数字输入框控件,支持增减按钮、精度控制、范围限制等功能。适用于数值输入、数量选择等场景。

一、示例图


如有前缀和后缀文本时,悬停出现增减按钮,离开提示文本。可以不用为输入框单独设置说明文本,也可以带计量单位等用途,非常个性。

二、使用说明

NumberBox 数字输入框控件

控件名称

NumberBox

中文名称

数字输入框控件

控件优点

NumberBox 是一个功能丰富的数字输入框控件,支持增减按钮、精度控制、范围限制等功能。适用于数值输入、数量选择等场景。

主要特性

  • 增减按钮:支持点击按钮增减数值
  • 精度控制:支持设置小数位数
  • 范围限制:支持设置最小值和最大值
  • 步长设置:支持设置增减步长
  • 键盘输入:支持直接键盘输入数值
  • 长按连续:支持长按按钮连续增减
  • 鼠标滚轮:支持鼠标滚轮控制数值增减
  • 自定义按钮文本:支持自定义增减按钮的符号文本

重要参数说明

基本属性

属性名 类型 默认值 说明
Value decimal 0 当前值
MinValue decimal 0 最小值
MaxValue decimal 100 最大值
Step decimal 1 增减步长
Precision int 0 小数位数

外观属性

属性名 类型 默认值 说明
ButtonColor Color 245, 245, 245 按钮颜色
ButtonHoverColor Color 230, 230, 230 按钮悬停颜色
ButtonPressedColor Color 220, 220, 220 按钮按下颜色
BorderColor Color 200, 200, 200 边框颜色
TextBoxColor Color White 文本框颜色
ButtonSignColor Color 80, 80, 80 按钮符号颜色
PlaceholderColor Color Gray 占位符颜色
CornerRadius int 4 圆角半径
ButtonWidth int 35 按钮宽度

其他属性

属性名 类型 默认值 说明
Placeholder string "" 占位符文本
PrefixText string "" 减号按钮文本前缀(智能显示:默认显示文本,悬停时显示减号符号)
SuffixText string "" 加号按钮文本后缀(智能显示:默认显示文本,悬停时显示加号符号)
ControlPadding Padding 1 控件内边距

主题支持

属性名 类型 默认值 说明
FollowGlobalTheme bool true 是否跟随全局主题变化

主题颜色说明:

元素 亮色模式 暗色模式
背景色 白色 深灰 (45,45,48)
边框颜色 浅灰 (200,200,200) 深灰 (80,80,80)
按钮颜色 浅灰 (245,245,245) 深灰 (60,60,60)
按钮悬停 浅蓝灰 深蓝灰
按钮按下 蓝灰 深灰
文字颜色 深灰 浅灰
按钮符号颜色 中灰 浅灰
占位符颜色 灰色 深灰 (100,100,100)

重要事件

事件名 说明
ValueChanged 数值改变时触发
PropertyChanged 属性值改变时触发

使用示例

基本使用

csharp 复制代码
// 创建数字输入框
NumberBox numberBox = new NumberBox();
numberBox.Size = new Size(150, 32);
this.Controls.Add(numberBox);

// 数值改变事件
numberBox.ValueChanged += (sender, e) =>
{
    Console.WriteLine($"当前值:{numberBox.Value}");
};

范围限制

csharp 复制代码
// 设置范围
numberBox.MinValue = 0;
numberBox.MaxValue = 100;
numberBox.Value = 50;

精度控制

csharp 复制代码
// 设置小数位数
numberBox.Precision = 2;  // 保留2位小数
numberBox.Step = 0.1m;    // 步长0.1

步长设置

csharp 复制代码
// 设置步长
numberBox.Step = 5;  // 每次增减5

颜色自定义

csharp 复制代码
// 设置颜色
numberBox.ButtonColor = Color.LightGray;
numberBox.ButtonHoverColor = Color.Gray;
numberBox.ButtonPressedColor = Color.DarkGray;
numberBox.BorderColor = Color.Gray;
numberBox.TextBoxColor = Color.White;

圆角设置

csharp 复制代码
// 设置圆角
numberBox.CornerRadius = 8;

// 直角
numberBox.CornerRadius = 0;

占位符

csharp 复制代码
// 设置占位符
numberBox.Placeholder = "请输入数量";

自定义按钮文本(智能显示模式)

csharp 复制代码
// 设置减号按钮文本前缀(智能显示模式)
numberBox.PrefixText = "温度";    // 默认显示"温度",鼠标悬停时显示"-"符号
numberBox.PrefixText = "min";     // 默认显示"min",鼠标悬停时显示"-"符号

// 设置加号按钮文本后缀(智能显示模式)
numberBox.SuffixText = "℃";      // 默认显示"℃",鼠标悬停时显示"+"符号
numberBox.SuffixText = "max";     // 默认显示"max",鼠标悬停时显示"+"符号

// 清除自定义文本,恢复默认符号
numberBox.PrefixText = "";        // 始终显示"-"符号
numberBox.SuffixText = "";        // 始终显示"+"符号

智能显示模式说明:

  • 默认状态:显示自定义文本(如单位、标签等信息)
  • 鼠标悬停:自动切换为增减符号,提示用户可以点击操作
  • 空文本:始终显示默认的增减符号

这种交互方式既保持了信息展示(显示单位或标签),又在用户操作时清晰提示功能(显示增减符号)。

鼠标滚轮控制

csharp 复制代码
// 鼠标悬停在控件上时,可通过滚轮控制数值增减
// 向上滚动增加数值,向下滚动减少数值
// 增减幅度由 Step 属性控制
numberBox.Step = 0.5m;  // 设置步长

数据绑定

csharp 复制代码
// 属性改变事件
numberBox.PropertyChanged += (sender, e) =>
{
    if (e.PropertyName == nameof(NumberBox.Value))
    {
        Console.WriteLine($"数值已更改:{numberBox.Value}");
    }
};

// 绑定到数据源
numberBox.DataBindings.Add("Value", dataSource, "Quantity");

注意事项

  1. 数值范围:Value 会被限制在 MinValue 和 MaxValue 之间
  2. 精度控制:Precision 控制显示的小数位数
  3. 步长设置:点击增减按钮时按 Step 值变化
  4. 长按连续:长按增减按钮会连续变化数值
  5. 鼠标滚轮:鼠标悬停时滚轮会改变数值,建议在只读或失能状态时禁用
  6. 自定义按钮文本:当 PrefixText 或 SuffixText 为空时显示默认符号,非空时显示自定义文本,文本会自动调整大小以适应按钮宽度

三、后记

更多期待,敬请关注,如有需求、好的建议,请留言(xue5zhijing)

相关推荐
久爱物联网10 天前
【WinForm UI控件系列】动画迷你反馈消息提示框(触发对象处)、类MessageBox(窗体或容器)
messagebox·winformui控件·c#控件ui·桌面应用ui控件·gdi绘制控件·messagetip·winfrom消息提示
久爱物联网1 个月前
【WinForm UI控件系列】散点图/折线图控件 (支持数值型、时间型、字符串型)
ui·winformui控件·c#控件ui·桌面应用ui控件·gdi绘制控件·散点图曲线图控件·时间型曲线图
久爱物联网1 个月前
【WinForm UI控件系列】PieChart饼状图控件
ui·winformui控件·c#控件ui·桌面应用ui控件·gdi绘制控件
久爱物联网1 个月前
【WinForm UI控件系列】Battery 电池电量控件
ui·winformui控件·桌面应用控件·c#控件ui·ui控件gdi
久爱物联网1 个月前
【WinForm UI控件系列】AlarmLight 报警灯\声光报警灯控件
ui·winformui控件·桌面应用控件·c# ui控件·gdi控件 net控件