【WinForm UI控件系列】模式输入对话框inputDialog(支持文本,整型、浮点型数字、单选框、多选框、下拉框、颜色)
InputDialog 是一个现代化的输入对话框控件,参考 Ant Design 设计规范,支持多种输入类型(文本型、数字型、单选型、复选型、颜色、密码)
一、示例
模式输入框(带遮罩层)、采用自定义输入框(水印、可清空等)
单选和复选框,采用本控件中的自定义控件
风格:默认,成功,警告,错误
新增下拉框
二、使用说明
InputDialog 输入对话框控件
控件优点
InputDialog 是一个现代化的输入对话框控件,参考 Ant Design 设计规范,支持多种输入类型:
- 文本输入(使用 InputBox 控件,支持水印提示)
- 密码输入
- 数字输入
- 下拉选择(使用 ComboBoxEx 控件)
- 单选组输入(使用 RadioEx 控件)
- 多选组输入(使用 CheckBoxEx 控件)
- 颜色选择(使用 ColorPicker 控件)
主要特性:
- 圆角边框设计
- 遮罩层效果(可选)
- 淡入动画
- 主题适配
- 可拖动标题栏
- 支持多种输入类型
重要参数说明
静态方法参数
| 方法 | 参数 | 类型 | 说明 |
|---|---|---|---|
ShowTextInput | owner | IWin32Window | 父窗口 |
| caption | string | 对话框标题 | |
| prompt | string | 提示文本(水印) | |
| value | ref string | 输入值 | |
ShowNumberInput | owner | IWin32Window | 父窗口 |
| caption | string | 对话框标题 | |
| prompt | string | 提示文本(水印) | |
| value | ref decimal | 数字值 | |
| decimalPlaces | int | 小数位数 | |
ShowRadioGroupInput | owner | IWin32Window | 父窗口 |
| caption | string | 对话框标题 | |
| prompt | string | 提示文本 | |
| options | List | 选项列表 | |
| selectedValue | ref string | 选中值 | |
ShowCheckBoxGroupInput | owner | IWin32Window | 父窗口 |
| caption | string | 对话框标题 | |
| prompt | string | 提示文本 | |
| options | List | 选项列表 | |
| selectedValues | ref string[] | 选中值数组 | |
ShowComboBoxInput | owner | IWin32Window | 父窗口 |
| caption | string | 对话框标题 | |
| prompt | string | 提示文本 | |
| options | List | 选项列表 | |
| selectedValue | ref string | 选中值 | |
ShowColorInput | owner | IWin32Window | 父窗口 |
| caption | string | 对话框标题 | |
| prompt | string | 提示文本 | |
| value | ref Color | 颜色值 |
实例属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Caption | string | “” | 对话框标题 |
PromptText | string | “请输入” | 提示文本 |
InputType | InputType | InputType.Text | 输入类型 |
ThemeColor | ThemeColorType | ThemeColorType.Primary | 主题颜色类型 |
TextValue | string | “” | 文本输入值 |
NumberValue | decimal | 0 | 数字输入值 |
DecimalPlaces | int | 0 | 小数位数 |
Options | List | new List() | 选项列表 |
ColorValue | Color | #1890ff | 颜色选择值 |
ShowOverlay | bool | true | 是否显示遮罩层 |
OverlayOpacity | int | 100 | 遮罩层透明度(0-255) |
只读属性(返回结果)
| 属性 | 类型 | 说明 |
|---|---|---|
ResultText | string | 返回文本值 |
ResultNumber | decimal | 返回数字值 |
ResultOptions | List | 返回选中选项值列表 |
ResultColor | Color | 返回选择的颜色 |
ResultColorHex | string | 返回颜色的十六进制字符串(如 #1890FF) |
InputOption 选项类
publicclassInputOption{publicstringValue{get;set;}// 选项值publicstringText{get;set;}// 显示文本publicboolSelected{get;set;}// 是否选中}ThemeColorType 主题色类型
| ThemeColorType | 颜色 | 说明 |
|---|---|---|
Primary | #1890ff | 品牌主色(蓝色) |
Success | #52c41a | 成功色(绿色) |
Warning | #faad14 | 警告色(橙色) |
Error | #f5222d | 错误色(红色) |
使用示例
1. 使用静态方法(简单场景)
// 文本输入stringname="";InputDialog.ShowTextInput(this,"输入名称","请输入您的姓名:",refname);// 密码输入stringpassword="";InputDialog.ShowPasswordInput(this,"输入密码","请输入密码:",refpassword);// 数字输入decimalprice=0;InputDialog.ShowNumberInput(this,"输入价格","请输入价格:",refprice,2);// 单选组varoptions=newList<InputOption>{newInputOption("A","选项A"){Selected=true},newInputOption("B","选项B"},newInputOption("C","选项C"}};stringselected="";InputDialog.ShowRadioGroupInput(this,"选择","请选择一项:",options,refselected);// 多选组string[]selectedValues=null;InputDialog.ShowCheckBoxGroupInput(this,"多选","请选择多项:",options,refselectedValues);// 下拉选择varcomboOptions=newList<InputOption>{newInputOption("1","选项一"),newInputOption("2","选项二"),newInputOption("3","选项三")};stringselected="";InputDialog.ShowComboBoxInput(this,"选择","请选择一项:",comboOptions,refselected);// 颜色选择ColorselectedColor=Color.FromArgb(24,144,255);InputDialog.ShowColorInput(this,"选择颜色","请选择主题色:",refselectedColor);2. 使用扩展方法(支持遮罩层自定义)
首先添加 using 引用:
usingAntdUIEx.Extensions;然后使用扩展方法:
// 文本输入 - 带遮罩层stringname="";this.ShowTextInputEx("输入名称","请输入您的姓名:",refname,showOverlay:true,overlayOpacity:100);// 文本输入 - 不带遮罩层this.ShowTextInputEx("输入名称","请输入您的姓名:",refname,showOverlay:false);// 密码输入stringpassword="";this.ShowPasswordInputEx("输入密码","请输入密码:",refpassword,showOverlay:true);// 数字输入decimalprice=0;this.ShowNumberInputEx("输入价格","请输入价格:",refprice,2,showOverlay:true,overlayOpacity:80);// 单选组stringselected="";this.ShowRadioGroupInputEx("选择","请选择一项:",options,refselected,showOverlay:true);// 多选组string[]selectedValues=null;this.ShowCheckBoxGroupInputEx("多选","请选择多项:",options,refselectedValues,showOverlay:true);// 下拉选择stringselected="";this.ShowComboBoxInputEx("选择","请选择一项:",comboOptions,refselected,showOverlay:true);3. 使用实例方式(完整控制)
stringname="";using(vardialog=newInputDialog()){dialog.Caption="输入名称";dialog.PromptText="请输入您的姓名:";dialog.InputType=InputType.Text;dialog.TextValue=name;dialog.ShowOverlay=true;dialog.OverlayOpacity=100;if(dialog.ShowDialog(this)==DialogResult.OK){name=dialog.ResultText;MessageBox.Show("您输入的是:"+name);}}// 颜色选择using(vardialog=newInputDialog()){dialog.Caption="选择颜色";dialog.PromptText="请选择主题色:";dialog.InputType=InputType.Color;dialog.ColorValue=Color.FromArgb(24,144,255);dialog.ThemeColor=ThemeColorType.Primary;if(dialog.ShowDialog(this)==DialogResult.OK){Colorselected=dialog.ResultColor;//色值stringhex=dialog.ResultColorHex;// #1890FF//MessageBox.Show($"选择的颜色:{hex}");}}// 颜色快速示例Colorcolor=Color.Blue;//默认if(InputDialog.ShowColorInput(this,"选择颜色","请选择主题色",refcolor)==DialogResult.OK){groupBox4.HeaderColor=color;//色值应用}4. 设置主题色
// 设置不同的主题色using(vardialog=newInputDialog()){dialog.Caption="警告提示";dialog.PromptText="请确认您的操作:";dialog.InputType=InputType.Text;dialog.ThemeColor=ThemeColorType.Warning;// 设置为警告色(橙色)dialog.ShowDialog(this);}// 使用成功色using(vardialog=newInputDialog()){dialog.Caption="操作成功";dialog.PromptText="请输入备注:";dialog.InputType=InputType.Text;dialog.ThemeColor=ThemeColorType.Success;// 设置为成功色(绿色)dialog.ShowDialog(this);}// 使用错误色using(vardialog=newInputDialog()){dialog.Caption="错误提示";dialog.PromptText="请重新输入:";dialog.InputType=InputType.Text;dialog.ThemeColor=ThemeColorType.Error;// 设置为错误色(红色)dialog.ShowDialog(this);}扩展方法说明
InputDialogExtensions 扩展方法类提供了更便捷的调用方式,支持遮罩层参数自定义:
| 扩展方法 | 对应功能 | 额外参数 |
|---|---|---|
ShowTextInputEx | 文本输入 | showOverlay, overlayOpacity |
ShowPasswordInputEx | 密码输入 | showOverlay, overlayOpacity |
ShowNumberInputEx | 数字输入 | showOverlay, overlayOpacity, decimalPlaces |
ShowRadioGroupInputEx | 单选组输入 | showOverlay, overlayOpacity |
ShowCheckBoxGroupInputEx | 多选组输入 | showOverlay, overlayOpacity |
ShowComboBoxInputEx | 下拉选择 | showOverlay, overlayOpacity |
注意事项
- 遮罩层设置:静态方法使用默认遮罩层设置,如需自定义请使用扩展方法或实例方式
- 清除按钮:InputBox 的 AllowClear 属性设置为 true,但清除按钮仅在输入框有内容时显示
- 水印显示:提示文本作为 InputBox 的 Placeholder(水印)显示,输入框为空时可见
- 单选/多选:选项值使用 HashSet 去重,避免重复显示
- 返回值:通过 ref 参数返回用户输入的值,取消时原值不变
三、后记
更多功能和控件完善中,持续关注,如有需求或好的建议,请留言(xue5zhijing)
