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
英文地址,請注明出處:http://en.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…