C#: 输入对话框窗口函数

这是一个 C# 输入对话框函数,主要功能包括:

  1. 基础功能:创建带标题、提示文本和输入框的对话框,返回用户输入或空字符串(取消时)

  2. 增强特性

    • 支持必填项验证
    • 支持正则表达式格式验证
    • 实时错误提示与按钮状态更新
    • 自定义验证失败消息
    • 自动资源管理(using 语句)
  3. 用户体验

    • Enter/Esc 快捷键支持
    • 输入有效性实时反馈
    • 提交时强制格式检查
  4. 代码质量

    • 模块化验证逻辑
    • 事件驱动设计
    • 安全的资源释放机制
/// <summary>
/// 创建一个可配置的输入对话框,提示用户输入文本并返回结果
/// </summary>
/// <param name="prompt">显示给用户的提示文本</param>
/// <param name="title">对话框的标题(可选,默认为空)</param>
/// <param name="defaultValue">输入框的默认值(可选,默认为空)</param>
/// <param name="isRequired">是否为必填项(可选,默认否)</param>
/// <param name="validationPattern">正则验证模式(可选,默认不验证)</param>
/// <param name="validationMessage">验证失败时的提示(可选)</param>
/// <returns>用户输入的文本,如果用户取消则返回空字符串</returns>
public static string InputBox(string prompt, string title = "", string defaultValue = "",bool isRequired = false,string validationPattern = "",string validationMessage = "输入格式不正确")
{using (Form form = new Form())using (Label label = new Label())using (TextBox textBox = new TextBox())using (Button buttonOk = new Button())using (Button buttonCancel = new Button())using (ErrorProvider errorProvider = new ErrorProvider()){// 配置窗体属性form.Text = title;form.ClientSize = new Size(350, 160);form.FormBorderStyle = FormBorderStyle.FixedDialog;form.StartPosition = FormStartPosition.CenterScreen;form.MinimizeBox = false;form.MaximizeBox = false;form.AcceptButton = buttonOk;form.CancelButton = buttonCancel;form.KeyPreview = true;form.FormClosing += (sender, e) => {if (form.DialogResult == DialogResult.OK && !IsValidInput(textBox.Text)){e.Cancel = true;MessageBox.Show(validationMessage, "输入错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);}};// 配置提示标签label.Text = prompt;label.Location = new Point(15, 20);label.AutoSize = true;// 配置文本输入框textBox.Text = defaultValue;textBox.Location = new Point(15, 85);textBox.Size = new Size(310, 20);textBox.TextChanged += (sender, e) => {errorProvider.Clear();if (isRequired && string.IsNullOrWhiteSpace(textBox.Text)){errorProvider.SetError(textBox, "此字段为必填项");}};// 配置确定按钮buttonOk.Text = "确定";buttonOk.Location = new Point(100, 120);buttonOk.DialogResult = DialogResult.OK;buttonOk.Enabled = !isRequired || !string.IsNullOrWhiteSpace(defaultValue);// 配置取消按钮buttonCancel.Text = "取消";buttonCancel.Location = new Point(180, 120);buttonCancel.DialogResult = DialogResult.Cancel;// 添加控件到窗体form.Controls.AddRange(new Control[] { label, textBox, buttonOk, buttonCancel });// 输入验证方法bool IsValidInput(string input){if (isRequired && string.IsNullOrWhiteSpace(input))return false;if (!string.IsNullOrEmpty(validationPattern) && !System.Text.RegularExpressions.Regex.IsMatch(input, validationPattern))return false;return true;}// 启用实时验证textBox.TextChanged += (sender, e) => {buttonOk.Enabled = IsValidInput(textBox.Text);};// 显示对话框并返回结果return form.ShowDialog() == DialogResult.OK ? textBox.Text : "";}
}    

示例调用:

// 简单文本输入
string name = InputBox("请输入姓名");// 带验证的邮箱输入
string email = InputBox("邮箱", "注册", isRequired:true, validationPattern:@"^[\w-]+@[\w-]+\.[a-z]{2,}$");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89145.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCB工艺学习与总结-20250628

一、PCB板材 1、结构组成 基板:作为电路板的支撑体,通常由绝缘材料制成,如玻璃纤维或塑料。 导线:用于连接电路板上的各个元件,传输电流和信号。 元件:包括电阻、电容、电感、二极管、晶体管等,用于实现电路的各种功能。 焊盘:用于焊接元件引脚的金属片,确保元件…

VUE2与VUE3项目环境变量创建与使用区别

环境变量文件是项目中的.env开头的文件&#xff0c;如下图&#xff1a; 下图是VUE2.env文件中的配置&#xff0c;是以VUE_APP开头的 VUE_APP_PAGE_TITLE系统 VUE_APP_SERVICE_PREFIX/gateway/xxxxx在使用时 只需要 调用 process.env.VUE_APP_SERVICE_PREFIX 就可以获取到值 而…

php flush实时输出线上环境好使,本地环境等待一段时间后一次性输出结果的原因

近期对接deepseek接口时为了拥有较好的用户体验&#xff0c;等待答案返回时采用了flush分布输出&#xff0c;但是线上环境下可以正常分布输出&#xff0c;同样代码在本地总是等待许久后一次性出结果&#xff0c;排查许久&#xff0c;发现竟然是本地和线上不同的php加载模式导致…

【世纪龙科技】东风风光580汽车维护与底盘拆装检修仿真教学软件

在职业院校汽车专业的教学实践中&#xff0c;传统的汽车维护与底盘拆装实训常面临诸多挑战。实车操作不仅存在安全隐患&#xff0c;设备损耗、教学成本高的问题也不容忽视&#xff1b;部分学生因操作机会有限&#xff0c;难以系统掌握规范流程和仪器使用&#xff0c;教师在教学…

React大型项目目录结构设计

以下这种结构设计适合以下场景&#xff1a; 10人以上开发团队协作长期维护的中大型项目需要高度模块化和可扩展性的项目需要严格类型检查的TypeScript项目 根据实际需求&#xff0c;可以适当调整模块划分和目录结构&#xff0c;但保持核心的模块化思想和分层架构是关键。 Re…

【C语言】超市管理系统丨完整源码与实现解析

通过这个完整的超市管理系统&#xff0c;您将掌握C语言核心数据结构与文件操作技术 设计思路与核心数据结构 本系统使用动态数组管理商品数据&#xff0c;支持商品增删改查、文件存储和数据统计功能。系统采用模块化设计&#xff0c;分为商品管理、文件操作和用户界面三大模块…

RK3506开发板:多核异构架构赋能高可靠性工业应用

在工业4.0与物联网技术深度融合的当下&#xff0c;企业对嵌入式计算平台的需求正从单一性能向高能效、高可靠、高实时性方向演进。RK3506开发板凭借其创新的三核A7单核M0多核异构架构、紧凑型设计及丰富的外设资源&#xff0c;成为电力、工业网关、HMI&#xff08;人机界面&…

【AIOT 领域-拆解智能对话全生态需求】​​全双工对话-单工对话-半双工

在万物互联的物联网时代&#xff0c;设备间的"对话方式"直接决定了数据传输的效率与可靠性。今天带大家深入解析三种基础通信模式&#xff0c;从工业传感器到5G基站&#xff0c;一文看透数据传输的底层逻辑&#xff01; &#x1f50c; 单工通信&#xff1a;信息流的…

国产数据库华为高斯的GaussDB创建数据表和添加字段及注释

国产数据库华为高斯的GaussDB创建数据表和添加字段及注释 &#x1f538; 一、创建数据库&#x1f538; 二、修改数据库&#xff08;重命名&#xff09;&#x1f538; 三、创建数据表并加字段注释&#x1f538; 四、修改表结构1. 添加字段➕ 添加字段的注释2. 修改字段类型3. 修…

VSCode与Git交互

文章目录 VSCode与Git交互一、引言二、基础设施搭建**PS:在开始高效使用Git之前&#xff0c;首先需要搭建好基础设施&#xff0c;包括安装和配置Git以及VSCode&#xff0c;并初始化Git仓库。**2.1 安装和配置Git&#xff08;1&#xff09;Git的下载与安装&#xff08;2&#xf…

Java 中通信接口

Java 中通信接口 1、Java UDP 通信核心接口介绍1、DatagramSocket 类2、DatagramPacket 类3、UDP客户端与UDP服务器通信例子 2、Java TCP 通信核心接口介绍1、ServerSocket 类2、Socket 类3、输入输出流常见包装类4、TCP 客户端与 TCP 服务器通信例子 Java 网络通信基于 Socket…

树种识别与碳储量计算:基于多源遥感数据与深度学习的融合框架

树种识别与碳储量计算:基于多源遥感数据与深度学习的融合框架 1. 引言:背景与意义 森林作为陆地生态系统的主体,在全球碳循环中扮演着至关重要的角色。精准估算森林生物量及其蕴含的碳储量,是评估区域乃至全球碳收支、应对气候变化、制定森林管理策略的核心科学问题。传统…

如何高效地将照片从 Android 传输到计算机

“如何将图片从 Android 设备传输到笔记本电脑&#xff1f;”我们在 Quora 上发现了这个问题&#xff0c;这篇文章中有不同的答案。如果您对此感到好奇&#xff0c;请不要错过这篇文章&#xff0c;因为在检查所有答案和其他在线帖子并进行测试后&#xff0c;我们整理了 6 种经过…

httpget请求与获取返回值

首先需要在pom中添加对应包信息 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version> </dependency> <dependency><groupId>com.alibaba<…

Rust交互式编程环境Jupyter Lab搭建

windows 11wsl2Ubuntu 24.04.1 LTS Installer.exerust-1.88.0-x86_64-unknown-linux-gnu.tar.xzevcxr_jupyter-v0.20.0-x86_64-unknown-linux-gnu.tar.gzMiniconda3-py312_25.1.1-2-Linux-x86_64.sh /etc/apt/sources.list配置镜像源&#xff08;最好先删除sources.list.d的官…

理解WebGL中的顶点着色器和片元着色器

WebGL是一种基于OpenGL ES的JavaScript API&#xff0c;它允许我们在网页上直接渲染3D图形而无需任何插件。WebGL的核心是着色器编程&#xff0c;它主要包含两种着色器&#xff1a;顶点着色器(Vertex Shader)和片元着色器(Fragment Shader)。 顶点着色器负责处理每个顶点的位置…

从UI设计到数字孪生:构建智慧城市的数据可视化体系

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在城市化进程加速与数字化转型的双重驱动下&#xff0c;智慧城市正从概念走向落地 —— 据 ID…

OpenCV图像旋转:单点旋转与图片旋转

1. 引言 图像旋转是计算机视觉中最基础也是最重要的几何变换之一&#xff0c;在图像处理、计算机视觉、医学影像分析等领域有着广泛应用。OpenCV作为最流行的计算机视觉库&#xff0c;提供了强大的图像旋转功能。本文将深入探讨OpenCV中的两种旋转方式&#xff1a;基于单点的仿…

yolov11安装,训练模型,tensorrtx加速,Qt预测图像

文章目录 一. yolov11 python环境安装二. windows10下yolov11 tensorrtx推理加速三. windows10下qt调用tensorrtx加速的yolov11进行检测 一. yolov11 python环境安装 基础环境 CUDA&#xff1a;cuda_11.8.0_522.06_windows cudnn&#xff1a;cudnn-windows-x86_64-8.6.0.163_c…

生物化学 PCR(聚合酶链式反应)引物 制造(固相磷酰胺化学法) 购买 存储

引物&#xff08;Primer&#xff09; 引物&#xff08;Primer&#xff09;是一小段单链 DNA&#xff08;通常 18~25 个碱基&#xff09;&#xff0c;与模板 DNA 的特定位点互补。包括&#xff1a;Forward Primer&#xff08;正向引物&#xff09;和 Reverse Primer&#xff08…