当前位置: 首页 > news >正文

C#软键盘设计字母数字按键处理相关事件函数

应用场景:便携式设备和检测设备等小型设备经常使用触摸屏来代替键盘鼠标的使用,因此在查询和输入界面的文本或者数字输入控件中使用软件盘来代替真正键盘的输入。

软键盘界面:软键盘界面实质上就是一个普通的窗体上面摆放了很多图片按钮,拖拉对应的文本、按钮等控件到设计界面即可、按键的命名遵循简单好记的规则。

字母键盘界面:26个字母按键的命名从btna-btnz。

字母按键处理代码如下:

            #region 字母按钮事件this.btna.Click += new System.EventHandler(this.btna_Click);this.btnb.Click += new System.EventHandler(this.btnb_Click);this.btnc.Click += new System.EventHandler(this.btnc_Click);this.btnd.Click += new System.EventHandler(this.btnd_Click);this.btne.Click += new System.EventHandler(this.btne_Click);this.btnf.Click += new System.EventHandler(this.btnf_Click);this.btng.Click += new System.EventHandler(this.btng_Click);this.btnh.Click += new System.EventHandler(this.btnh_Click);this.btni.Click += new System.EventHandler(this.btni_Click);this.btnj.Click += new System.EventHandler(this.btnj_Click);this.btnk.Click += new System.EventHandler(this.btnk_Click);this.btnl.Click += new System.EventHandler(this.btnl_Click);this.btnm.Click += new System.EventHandler(this.btnm_Click);this.btnn.Click += new System.EventHandler(this.btnn_Click);this.btno.Click += new System.EventHandler(this.btno_Click);this.btnp.Click += new System.EventHandler(this.btnp_Click);this.btnq.Click += new System.EventHandler(this.btnq_Click);this.btnr.Click += new System.EventHandler(this.btnr_Click);this.btns.Click += new System.EventHandler(this.btns_Click);this.btnt.Click += new System.EventHandler(this.btnt_Click);this.btnu.Click += new System.EventHandler(this.btnu_Click);this.btnv.Click += new System.EventHandler(this.btnv_Click);this.btnw.Click += new System.EventHandler(this.btnw_Click);this.btnx.Click += new System.EventHandler(this.btnx_Click);this.btny.Click += new System.EventHandler(this.btny_Click);this.btnz.Click += new System.EventHandler(this.btnz_Click);#endregion

对应的字母按钮点击事件处理代码

#region 单个字符按钮点击事件#region 第一排字母按钮点击事件private void btnq_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "q";elsetxtResult.Text += "Q"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnw_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "w";elsetxtResult.Text += "W"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btne_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "e";elsetxtResult.Text += "E"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnr_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "r";elsetxtResult.Text += "R"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnt_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "t";elsetxtResult.Text += "T"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btny_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "y";elsetxtResult.Text += "Y"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnu_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "u";elsetxtResult.Text += "U"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btni_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "i";elsetxtResult.Text += "I"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btno_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "o";elsetxtResult.Text += "O"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnp_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "p";elsetxtResult.Text += "P"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}#endregion#region 第二排字母按钮点击事件private void btna_Click(object sender, EventArgs e){if (InputType == "English"){txtResult.Text += this.btna.Text;}else if (InputType == "Char"){txtResult.Text += this.btna.Text;}else if (InputType == "Chinese"){lblPinyin.Text += this.btna.Text;}//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btns_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "s";elsetxtResult.Text += "S"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnd_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "d";elsetxtResult.Text += "D"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnf_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "f";elsetxtResult.Text += "F"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btng_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "g";elsetxtResult.Text += "G"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnh_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "h";elsetxtResult.Text += "H"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnj_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "j";elsetxtResult.Text += "J"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnk_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "k";elsetxtResult.Text += "K"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnl_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "l";elsetxtResult.Text += "L"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}#endregion#region 第三排字母按钮点击事件private void btnz_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "z";elsetxtResult.Text += "Z"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnx_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "x";elsetxtResult.Text += "X"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnc_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "c";elsetxtResult.Text += "C"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnv_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "v";elsetxtResult.Text += "V"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnb_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "b";elsetxtResult.Text += "B"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnn_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "n";elsetxtResult.Text += "N"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btnm_Click(object sender, EventArgs e){if (!(Caps_Lock ^ ShiftFlag))txtResult.Text += "m";elsetxtResult.Text += "M"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}#endregion#endregion

 数字键盘界面:0-9数字按键命名分别是btn0-btn9

数字按钮点击事件绑定

#region 数字按钮点击事件this.btn0.Click += new System.EventHandler(this.btn0_Click);this.btn1.Click += new System.EventHandler(this.btn1_Click);this.btn2.Click += new System.EventHandler(this.btn2_Click);this.btn3.Click += new System.EventHandler(this.btn3_Click);this.btn4.Click += new System.EventHandler(this.btn4_Click);this.btn5.Click += new System.EventHandler(this.btn5_Click);this.btn6.Click += new System.EventHandler(this.btn6_Click);this.btn7.Click += new System.EventHandler(this.btn7_Click);this.btn8.Click += new System.EventHandler(this.btn8_Click);this.btn9.Click += new System.EventHandler(this.btn9_Click);#endregion

数字按钮点击事件代码

#region 数字键盘点击事件private void btn0_Click(object sender, EventArgs e){txtResult.Text += "0";txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btn1_Click(object sender, EventArgs e){txtResult.Text += "1";txtResult.Focus();//设置光标的位置到文本尾txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处txtResult.ScrollToCaret();}private void btn2_Click(object sender, EventArgs e){txtResult.Text += "2";txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btn3_Click(object sender, EventArgs e){txtResult.Text += "3"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btn4_Click(object sender, EventArgs e){txtResult.Text += "4"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btn5_Click(object sender, EventArgs e){txtResult.Text += "5"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btn6_Click(object sender, EventArgs e){txtResult.Text += "6"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btn7_Click(object sender, EventArgs e){txtResult.Text += "7"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btn8_Click(object sender, EventArgs e){txtResult.Text += "8"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}private void btn9_Click(object sender, EventArgs e){txtResult.Text += "9"; txtResult.Focus();//设置光标的位置到文本尾 txtResult.Select(txtResult.Text.Length, 0);//滚动到控件光标处 txtResult.ScrollToCaret();}#endregion

相关文章:

C#软键盘设计字母数字按键处理相关事件函数

应用场景:便携式设备和检测设备等小型设备经常使用触摸屏来代替键盘鼠标的使用,因此在查询和输入界面的文本或者数字输入控件中使用软件盘来代替真正键盘的输入。 软键盘界面:软键盘界面实质上就是一个普通的窗体上面摆放了很多图片按钮&…...

C++笔记---set和map

1. 序列式容器与关联式容器 前面我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间一般没有紧密的关联关…...

HTTP 教程

HTTP/HTTPS 简介 HTTP(Hypertext Transfer Protocol,超文本传输协议)和 HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议)是用于在网络中传输信息的两种主要协议。它们定义了客户端和服务器…...

低代码革命:加速云原生时代的端到端产品创新

随着云计算技术的飞速发展,云原生成为了企业数字化转型的重要方向。云原生技术通过容器化、微服务、持续集成/持续部署(CI/CD)等实践,帮助企业构建和运行可扩展的应用程序。然而,云原生技术的复杂性也给开发团队带来了…...

力扣 92.反转链表Ⅱ

力扣《反转链表》系列文章目录 刷题次序,由易到难,一次刷通!!! 题目题解206. 反转链表反转链表的全部 题解192. 反转链表 II反转链表的指定段24. 两两交换链表中的节点两个一组反转链表 题解225. K 个一组翻转链表K …...

2024年最新版TypeScript学习笔记——泛型、接口、枚举、自定义类型等知识点

今天带来的是来自尚硅谷禹神2024年8月最新的TS课程的学习笔记,不得不说禹神讲的是真的超级棒! 文章目录 TS入门JS中的困扰静态类型检查编译TS命令行编译自动化编译 类型检查变量和函数类型检查字面量类型检查 类型推断类型声明声明对象类型声明函数类型…...

java项目之城镇保障性住房管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的城镇保障性住房管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 城镇保障性住房管…...

无人机之航线规划篇

无人机的航线规划是一个复杂但至关重要的过程,它确保了无人机在飞行过程中的安全、高效以及任务的顺利完成。以下是对无人机航线规划的详细解析: 一、定义与目的 无人机航线规划是指依据无人机任务分配,规划出符合安全条件的飞行航线。这一过…...

828 华为云征文|华为 Flexus 云服务器搭建 PicGo 图床

在这个充满非凡意义的日子里,我怀揣着满心的热忱与憧憬,毅然决然地踏上了借助华为 Flexus 云服务器搭建 PicGo 图床的精彩征程。这段旅程,注定充满了无数的挑战与意外之喜,宛如在广袤无垠的数字海洋中勇敢地探寻那神秘而珍贵的宝藏…...

Zabbix 6.4添加中文语言

/usr/share/zabbix/include/locales .inc .phplocale -agrep “zh_CN" yum install langpacks-zh_CN.noarch y y y...

【退役之再次线上部署】Spring Boot + VUE + Nginx + MySQL

这篇博客写在凌晨 4 点 20 分,这个时候我刚线上部署完成 web 项目,自己写的全栈项目 这个点儿,也睡不着了,索性就写篇博客记录一下 一、踩坑实录 这个是 最重要的,所以写在前面 Nginx 配置文件 location location /a…...

Qanything 2 0源码解析系列1:新建知识库

Qanything 2.0源码解析系列1:新建知识库 文章转载自:https://www.feifeixu.top/article/19c76951-5881-4181-bb63-4188b28d3917 😀 前言: qanything所有接口都定义在sanic_api.py中 接口函数定义在同级目录下的handler.py中 新建…...

Redis-01 入门和十大数据类型

Redis支持两种持久化方式:RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上,可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照,可以通过恢复RDB文件来恢复数据。 2.AOF持久化…...

IT行业的现状与未来发展趋势

IT行业的现状与未来发展趋势 近年来,随着科技的迅猛发展,IT行业无疑已经成为全球经济增长的重要驱动力之一。无论是人工智能、大数据,还是云计算和区块链技术,IT行业的创新始终在不断推动着各个领域的变革。 人工智能的广泛应用…...

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Jenkins CI/CD平台

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Jenkins CI/CD平台 Jenkins 是一个开源的自动化服务器,用于持续集成(CI)和持续交付(CD)软件项目。它允许开发人员在软件开发过程中自动化各种任务&…...

今日 leetCode 15.三数之和

15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元…...

Games101笔记-二维Transform变换(二)

1、什么是Transform Transform就是通过一个矩阵,进行缩放、旋转、平移等变换 2、缩放、旋转、切变、平移等基础变换 缩放变换: 反射变换: 切变: 绕原点旋转: 以上都是线性变换: 平移变换&#xf…...

【洛谷】AT_abc371_c [ABC371C] Make Isomorphic 的题解

【洛谷】AT_abc371_c [ABC371C] Make Isomorphic 的题解 洛谷传送门 AT传送门 题解 抽象题目,抽象翻译,可能是我太菜了,根本没看懂题目,后面是听大佬讲题才发现,这不就是一题全排列暴力题吗。谔谔,真的…...

全国职业院校技能大赛(大数据赛项)-平台搭建Spark、Scala笔记

Spark作为一个开源的分布式计算框架拥有高效的数据处理能力、丰富的生态系统、多语言支持以及广泛的行业应用。Scala是一种静态类型的编程语言,它结合了面向对象编程和函数式编程的特性,被誉为通用的“大数据语言”。而二者的结合更能迸发出新奇的化学反…...

【Java】JVM基本组成

一、JDK、JRE、JVM JDK:全称 “Java Development Kit” Java 开发工具包,提供 javac编译器、jheap、jconsole 等监控工具; JRE:全称 “Java Runtime Environment” Java 运行环境,提供 class Library 核心类库JVM; …...

工具推荐:HTML5+AI开发必备的前端调试工具

工具推荐:HTML5AI开发必备的前端调试工具 工具推荐:HTML5AI开发必备的前端调试工具📝 本章学习目标:本章聚焦职业发展,帮助读者规划HTML5AI的学习与职业路径。通过本章学习,你将全面掌握"工具推荐&…...

Android Studio中文插件终极指南:3分钟实现完整汉化体验

Android Studio中文插件终极指南:3分钟实现完整汉化体验 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Androi…...

YOLOv8推理性能跃迁:从CPU到GPU的实战迁移指南

1. 为什么要把YOLOv8推理从CPU迁移到GPU? 第一次用YOLOv8做目标检测时,我盯着屏幕上蜗牛般的推理速度差点崩溃——一张1080P的图片要处理3秒!直到把环境切换到GPU,速度直接飙升到30帧/秒,这种性能飞跃让我彻底明白了硬…...

如何选择一款既能过查重又能过AI检测的降重软件?(知网、维普、万方、格子达等)经验分享

毕业季与投稿季,论文查重率飙升、AIGC 疑似率居高不下,是无数人的噩梦。2026 年,国内超 82% 高校已实施 “查重率 AIGC 率” 双控标准,知网、维普、万方、格子达等平台算法全面升级,传统同义词替换早已失效。想要高效…...

FreeRTOS互斥锁的‘坑’与‘宝’:优先级翻转那些事儿,用ESP32实测给你看

FreeRTOS互斥锁的‘坑’与‘宝’:优先级翻转那些事儿,用ESP32实测给你看 在嵌入式实时系统中,任务调度和资源管理是核心挑战。当你开始设计多任务系统时,很快会遇到一个经典问题:多个任务需要访问共享资源(…...

从零开始:YY3568开发板刷写原生Linux系统全流程指南

1. 项目概述与核心价值 最近拿到了一块YY3568开发板,这是一款基于瑞芯微RK3568芯片的嵌入式开发平台,性能相当不错。很多朋友拿到开发板后,第一反应就是跟着官方文档跑个Demo,或者直接用板子预装的Android系统。但如果你和我一样&…...

2026年AI Agent正在变成企业的数字员工

本文探讨了技术圈对AI关注焦点的转变,从单纯关注模型能力转向关注AI Agent的实际应用价值。通过引用Anthropic和Material联合调研报告,文章指出AI Agent已广泛应用于多阶段工作流、生产代码开发、数据分析和内部流程自动化,并带来可衡量的经济…...

Auto-Lianliankan:3步实现Python图像识别破解连连看

Auto-Lianliankan:3步实现Python图像识别破解连连看 【免费下载链接】Auto-Lianliankan 基于python图像识别实现的连连看外挂,可实现QQ连连看秒破 项目地址: https://gitcode.com/gh_mirrors/au/Auto-Lianliankan 在游戏自动化领域,Au…...

3天掌握Dify工作流开发:从零构建企业级AI应用的完整指南

3天掌握Dify工作流开发:从零构建企业级AI应用的完整指南 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dif…...

RimSort终极指南:开源跨平台RimWorld模组管理器完全解析

RimSort终极指南:开源跨平台RimWorld模组管理器完全解析 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-ma…...