代码自动生成文本小工具TextStringizerWpf
TextStringizerWpf
一个基于 .NET 8 的 WPF 文本处理工具,用于将输入文本逐行包裹前后缀并按需转义常见字符,支持插值字符串模式、多配置可选项、预设与历史记录、UI 自适应布局和多屏多 DPI 启动居中。


功能特点
- 前后缀包裹:为每一行添加自定义的前缀与后缀。
- 字符转义:可选转义反斜杠
\、双引号"、大括号{}(插值字符串时自动强制转义)。 - 插值字符串:默认按 C# 插值字符串处理($“…”)。
- 选项配置:
- 使用插值字符串
- 转义双引号
- 转义反斜杠
- 转义大括号
- 跳过空行
- 去除每行首尾空白
- 实时更新
- 预设与历史:
- 插值预设、普通预设一键切换
- 前缀/后缀采用可编辑
ComboBox,支持历史记录,确认保存、取消恢复 - 历史自动去重,保留最近 20 条
- 多屏多 DPI:启动时可按配置多屏多 DPI 居中。
- 布局优化:
- 左侧“前缀:/后缀:”两行紧凑布局
- 中列选项两列栅格整齐对齐,下方三项(跳过空行/去除空白/实时更新)一行
- 右侧按钮固定 4 列,最后一行(确认/取消)右对齐
- 发布形态:依赖框架的单文件可执行(需要本机安装 .NET 8 运行时)。
目录结构(关键)
TextStringizerWpf/MainWindow.xaml与MainWindow.xaml.cs:UI 与交互逻辑Services/TextProcessor.cs:核心文本处理Models/TextProcessOptions.cs:处理选项Models/UserSettings.cs、Services/SettingsService.cs:前后缀历史与持久化App.xaml、App.xaml.cs:应用入口、托盘图标App.config:应用配置(含CenterOnStartup)
publish/:发布输出目录(单文件 EXE)
使用说明
- 启动
publish/TextStringizerWpf.exe。 - 在左侧输入框粘贴或输入待处理文本。
- 顶部左侧设置“前缀:”“后缀:”(可编辑下拉,有历史记录)。
- 中间列勾选需要的选项:
- 使用插值字符串(默认勾选)
- 转义双引号、转义反斜杠、转义大括号
- 跳过空行、去除每行首尾空白、实时更新
- 右上角常用按钮:
- 插值预设/普通预设:一键切换前后缀与相关选项
- 处理:手动触发处理
- 复制输出:复制到剪贴板
- 导入/导出:读写文本文件
- 清空输入/清空输出:快速清理
- 确认/取消:保存/恢复前后缀
- 输出结果位于右侧“输出”框。
前后缀历史与确认/取消
- 编辑完成后,点击“确认”将当前前缀/后缀保存到历史(自动去重、置顶),并作为下次启动的默认值。
- 点击“取消”会恢复到上次保存的前后缀(不保存当前编辑)。
- 历史保存位置:
%AppData%/TextStringizerWpf/settings.json。
多屏多 DPI 居中
- 在
App.config中通过appSettings设置:<add key="CenterOnStartup" value="true" /> - 启动后窗口会在当前显示器工作区基于 DPI 缩放精确居中。
启动居中与多屏/多 DPI 说明
- 无需在界面中设置开关,是否居中由配置
CenterOnStartup控制,默认支持多屏与每屏不同 DPI 情况。 - 程序启动时会:
- 通过
MonitorFromWindow/GetMonitorInfo获取当前窗口所在显示器及其工作区(物理像素)。 - 通过
GetDpiForWindow获取该窗口的实际 DPI,计算缩放因子(scale = DPI/96)。 - 将工作区从物理像素转换为 WPF 的 DIP(device independent pixels)。
- 在 DIP 坐标下计算
Left/Top/Width/Height,使窗口在当前显示器工作区内精准居中。
- 通过
- 为避免多 DPI 下出现放大/偏移问题,窗口
Width/Height不做硬编码,尽量根据实际可视工作区和内容进行计算与限制。
注意:如果你需要强制固定初始宽高(不建议在多 DPI 下),请在 MainWindow.xaml 中谨慎设置,并确保与 DPI 换算逻辑相容,否则可能出现居中失准或控件拥挤。
故障排查(居中相关)
- 窗口未居中:确认
App.config的CenterOnStartup=true是否生效,或者是否被外部窗口管理器调整。 - 副屏偏移:检查副屏缩放比例(显示设置-缩放与布局),窗口会按该屏幕
GetDpiForWindow的 DPI 计算居中。
注意事项
- 运行环境:需要安装 .NET 8 Desktop Runtime(非自包含发布)。
- 插值字符串模式下,大括号在 C# 字符串插值中用于表达式,工具会自动强制转义为
{{和}}。 - 字符转义顺序:反斜杠 → 双引号 → 大括号(当需要时),以减少二次转义干扰。
- 托盘图标:程序运行时系统托盘会常驻图标,右键可快速操作(如显示/置顶、退出)。
- 图标与布局:
- 应用图标统一(标题栏/任务栏/托盘/可执行文件)
- 右侧按钮固定四列,最后一行两按钮右对齐;在极小窗口时可能出现挤压,请适当放大窗口
发布与更新
- 在
TextStringizerWpf项目目录执行:dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true -p:SelfContained=false -o ..\publish - 发布结果位于根目录
publish/下,直接运行TextStringizerWpf.exe。
常见问题 FAQ
- 无法启动或显示异常?
- 确保已安装 .NET 8 Desktop Runtime。
- 如果从极老旧系统升级而来,建议以管理员身份首次运行。
- 剪贴板操作失败?
- 某些安全策略或第三方软件可能拦截,尝试以管理员身份运行或关闭相关限制。
- 托盘图标未显示?
- 个别系统托盘区可能被设置为隐藏,请在系统“任务栏设置”中显示此应用图标。
许可
本项目以私有用途为主,若需软件请联系作者,若需开源或分发请联系项目作者或维护者协调授权事宜。
