winform3
OpenFileDialogpublic partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){//定义一个文件打开控件OpenFileDialog ofd new OpenFileDialog();//设置打开对话框的初始目录默认目录为exe运行文件所在的路径ofd.InitialDirectory Application.StartupPath;//设置打开对话框的标题ofd.Title 请选择要打开的文件;//设置打开对话框可以多选ofd.Multiselect false;//设置对话框打开的文件类型ofd.Filter 文本文件|*.txt|音频文件|*.wav|图片文件|*.jpg|所有文件|*.*;//设置对话框是否记忆之前打开的目录ofd.RestoreDirectory false;if (ofd.ShowDialog() DialogResult.OK){string reg1 jpg$|png$;string reg2 txt$;//获取用户选择的文件完整路径string filePath ofd.FileName;Console.WriteLine(filePath);if (Regex.IsMatch(filePath, reg1)){//图片显示pictureBox1.SizeMode PictureBoxSizeMode.StretchImage; //使图像拉伸或收缩以适合PictureBoxthis.pictureBox1.ImageLocation filePath;}else if (Regex.IsMatch(filePath, reg2)){Console.WriteLine(File.ReadAllText(filePath));}}}正则表达式//什么是正则表达式//1.正则表达式(Regular Expression)是一种文本模式//包括普通字符如a - z,A - Z,0 - 9等和特殊字符如,?,*等。//2.正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。//3.正则表达式使用场景 比如 登录 册 验证邮箱 验证电话 验证密码等注// 2.正则表达式基本使用// 1 ^和$边界符 ^匹配开头 $匹配结尾string reg2 ^abc; //匹配字符串是不是以abc开头string reg3 abc$; //匹配字符串是不是以abc结尾// 2[]字符集 [] 表示一系列的字符可被匹配,只要匹配其中一个就可以var reg4 ^[0-9]; //匹配开头为数字的字符串var reg5 ^[a-z]; //匹配开头为小写字母的字符串var reg6 ^[A-Z]; //匹配开头为大写字母的字符串var reg7 ^[A-Za-z0-9] ; //匹配开头为字母或者是数字的字符串//3)^出现在[]内部 代表取反的意思var reg8 ^[^0-9]; //匹配开头不为数字的字符串// (4) 匹配前面的子表达式一次或多次。// 例如zo 能匹配 zo 以及 zoo但不能匹配 z。 等价于 {1,}var reg9 zo;// 6.* 匹配前面的子表达式0次或者多次// 例如zo* 能匹配 z 以及 zoo。* 等价于{0,}。var reg10 zo*;// 7. ?匹配前面的子表达式0次或者一次// 例如do(es)? 可以匹配 do 或 does 。? 等价于 {0,1}。var reg11 do(es)?;//8. | 表示或 匹配其中的一个或多个var reg12 你好|他好|她好;//9.{} 限定{}前面字符出现的次数// {6} 6次// {6,8} 6-8次// {6,} 至少6次// \d 代表数字 类似 [0-9]var reg13 ^\d{6}; //匹配开头6位都为数字的字符串string input cdabcdefghijkabc;string pattern bci;string replacement PP;var reg222 ^abc;// 检查是否匹配bool isMatch Regex.IsMatch(input, reg4);Console.WriteLine(是否存在 isMatch);//// 替换字符串中的匹配部分//string result Regex.Replace(input, pattern, replacement);//Console.WriteLine(替换结果 result);//// 获取所有匹配//MatchCollection matches Regex.Matches(input, pattern);//foreach (Match match in matches)//{// Console.WriteLine(Found ai at position match.Index);//}//// 使用模式分割字符串//string[] parts Regex.Split(input, pattern);//foreach (string part in parts)//{// Console.WriteLine(part);//}winform 异步刷新UIwinform UI刷新 在主线程中完成1.Invoke和beiginInvoke在多线程编程中**BeginInvoke**和**Invoke**是用于跨线程更新UI的两种方法。 以下是它们的基本定义和主要区别**Invoke**是同步调用会阻塞当前线程直到目标方法执行完成。**BeginInvoke**是异步调用不会阻塞当前线程允许程序继续执行其他任务。private void button3_Click(object sender, EventArgs e) { Task.Run(() { Button button (Button)sender; Thread.Sleep(1000); Console.WriteLine(下载10%); Thread.Sleep(1000); Console.WriteLine(下载30%); Thread.Sleep(1000); Console.WriteLine(下载40%); Thread.Sleep(1000); Console.WriteLine(下载60%); Thread.Sleep(1000); Console.WriteLine(下载80%); Thread.Sleep(1000); Console.WriteLine(下载100%); ////Invoke同步 //this.Invoke(new Action(delegate () { // //回到主线程刷新UI // button.Text 下载完毕; // for (int i 0; i 100; i) // { // Console.WriteLine(1); // } //})); //Console.WriteLine(Invoke同步); //BeginInvoke异步 this.BeginInvoke(new Action(delegate () { //回到主线程刷新UI button.Text 下载完毕; for (int i 0; i 100; i) { Console.WriteLine(1); } })); Console.WriteLine(BeginInvoke异步); }); }2.async/await无返回值 不需要 await内部的结果//async/wait无返回值类型 private async void button2_Click(object sender, EventArgs e) { //主线程同步 Console.WriteLine(111); Console.WriteLine(111); Console.WriteLine(111); Console.WriteLine(111); //分线程同步 await Task.Run(() { Thread.Sleep(1000); Console.WriteLine(下载10%); Thread.Sleep(1000); Console.WriteLine(下载30%); Thread.Sleep(1000); Console.WriteLine(下载40%); Thread.Sleep(1000); Console.WriteLine(下载60%); Thread.Sleep(1000); Console.WriteLine(下载80%); Thread.Sleep(1000); Console.WriteLine(下载100%); }); //主线程同步 button2.Text 下载完毕; }有返回值方式1 需要 await内部的结果//async/wait带有返回值类型 private async void button3_Click(object sender, EventArgs e) { //主线程同步 Console.WriteLine(111); Console.WriteLine(111); Console.WriteLine(111); Console.WriteLine(111); //分线程同步 var tempTask Task.Run(() { Thread.Sleep(1000); Console.WriteLine(下载10%); Thread.Sleep(1000); Console.WriteLine(下载30%); Thread.Sleep(1000); Console.WriteLine(下载40%); Thread.Sleep(1000); Console.WriteLine(下载60%); Thread.Sleep(1000); Console.WriteLine(下载80%); Thread.Sleep(1000); Console.WriteLine(下载100%); return xiazaiwanbi; }); string a await tempTask; //主线程同步 button3.Text a; } } }有返回值方式2private async void btnGetData_Click(object sender, EventArgs e) { try { // 1. 异步获取数据await会释放UI线程不会造成界面卡顿 string resultData await GetDataAsync(); // 2. await完成后自动回到UI线程直接更新Label.Text无需手动切换 button5.Text $获取成功{resultData}; } catch (Exception ex) { // 异常处理同样在UI线程更新提示 button5.Text $获取失败{ex.Message}; } finally { // 恢复按钮可用状态 button5.Enabled true; } } /// summary /// 异步获取数据的核心方法标记为async Taskstring返回异步任务 /// /summary private async Taskstring GetDataAsync() { // Task.Delay不会阻塞UI线程是异步等待 await Task.Delay(2000); //IO流等耗时操作 using (StreamReader reader new StreamReader(1.txt)) { return await reader.ReadToEndAsync(); } }

相关新闻

sql简单笔记2

sql简单笔记2

隐性转换 :oracle 默认的将数值转换成字符,尽量避免出现隐形转换子查询 定义: 是指 一条语句 嵌套 一条或者多条查询语句 ---1. 把 外层的查询叫做 主查询 里层的查询叫做 子 查询 -- 2 里层的子查询 必须加上括号 select (select )子…

2026/8/22 16:06:29 阅读更多 →
Golang GORM ORM 基础

Golang GORM ORM 基础

GORM ORM 基础 核心概念 GORM 是 Go 生态中最流行的 ORM 框架。它的设计哲学是:用 Go 结构体描述数据库表,用方法链表达查询逻辑,让开发者用面向对象的方式操作数据库,同时保留逃生通道(Raw SQL)。 ORM vs …

2026/8/22 16:06:29 阅读更多 →
DDSP-SVC 版本对比:从 1.1 到 6.3 的歌声转换演进与选型完整指南

DDSP-SVC 版本对比:从 1.1 到 6.3 的歌声转换演进与选型完整指南

DDSP-SVC 版本对比:从 1.1 到 6.3 的歌声转换演进与选型完整指南 【免费下载链接】DDSP-SVC Real-time end-to-end singing voice conversion system based on DDSP (Differentiable Digital Signal Processing) 项目地址: https://gitcode.com/gh_mirrors/dd/DDS…

2026/8/22 16:06:29 阅读更多 →

最新新闻

从国赛到实战:高可用Hyperledger Fabric区块链系统部署与运维全解析

从国赛到实战:高可用Hyperledger Fabric区块链系统部署与运维全解析

1. 项目概述:从国赛题目看区块链运维的核心挑战最近几年,全国职业院校技能大赛的“区块链技术与应用”赛项热度一直很高,尤其是其中的“区块链系统部署与运维”模块,可以说是检验选手从理论到实践综合能力的试金石。我接触过不少参…

2026/8/22 16:43:44 阅读更多 →
快手面试题解析:二分查找在任务分配中的应用

快手面试题解析:二分查找在任务分配中的应用

1. 快手面试题:两数之和变种解析这道题目是快手面试中出现的经典算法题变种,属于数组操作类问题的进阶版本。我们先看题目描述:给定一个整数数组和一个整数n,数组中每个数字代表一个房间需要打扫的时间,n表示有n名清洁…

2026/8/22 16:43:43 阅读更多 →
3步让阅读进度跨5端同步:Jasmine漫画浏览器快速上手

3步让阅读进度跨5端同步:Jasmine漫画浏览器快速上手

3步让阅读进度跨5端同步:Jasmine漫画浏览器快速上手 【免费下载链接】jasmine A comic browser,support Android / iOS / MacOS / Windows / Linux. 项目地址: https://gitcode.com/gh_mirrors/jas/jasmine 早上的地铁里,你在手机上看…

2026/8/22 16:43:43 阅读更多 →
路径规划实战:从数学建模到工业落地的多目标约束建模

路径规划实战:从数学建模到工业落地的多目标约束建模

1. 项目概述:这不是一道数学题,而是一次对“路径思维”的实战压力测试“2015年国赛:路径之谜”——这八个字在高校数学建模圈里,至今仍像一枚被反复摩挲的旧徽章。它不是某本教材里的例题编号,也不是某个算法库里的dem…

2026/8/22 16:43:43 阅读更多 →
MTEX 指南:免费Matlab织构分析工具箱,5分钟画出第一张EBSD晶粒图

MTEX 指南:免费Matlab织构分析工具箱,5分钟画出第一张EBSD晶粒图

MTEX 指南:免费Matlab织构分析工具箱,5分钟画出第一张EBSD晶粒图 【免费下载链接】mtex MTEX is a free Matlab toolbox for quantitative texture analysis. Homepage: 项目地址: https://gitcode.com/gh_mirrors/mt/mtex MTEX 是一个免费的 Mat…

2026/8/22 16:43:43 阅读更多 →
Whisky 完整教程:Apple Silicon Mac 免虚拟机运行 Windows 软件与游戏

Whisky 完整教程:Apple Silicon Mac 免虚拟机运行 Windows 软件与游戏

Whisky 完整教程:Apple Silicon Mac 免虚拟机运行 Windows 软件与游戏 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky Whisky 是一款让 Apple Silicon Mac 运行 Windows …

2026/8/22 16:42:43 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →