软件中常见基础编程功能实现(不断改进加载中…)收藏

【外挂编程】外挂编程技术揭秘(二) 引言: 经过上一篇文章大家可能对外挂有了一个初步的认识,之前的内容比较简单,应该大家很容易掌握。我写作过程中我发现三个篇幅可能写不完,后续还可能要多加几个篇幅,这篇我们就先以内存挂为主吧。话不多说了,让我们开始吧。 文章中代码github地址: https://github.com/Diamonds-ZhaoYu/hz_example 环境要求: 系统:Windows 语言... 阅读详情

一个小小的C/S软件其实设计到的东西不是很多,我想大致有以下几个方面。涉及到的问题有:循环遍历的大量使用;对话框的多次打开;多窗体的打开;某一控件的各种事件的实现~~

一,  软件中最常见的就是循环和遍历的用法, 实现遍历很容易,所以学习中重要的是注意以下都是什么地方需要遍历。一般是在需要查找某个元素,或是存储的某信息包括若干字段的时候,或是需要调用数据中 的许多字段重新存储的时候,更比如说需要元素之间排序或是比较的时候,就会用到遍历,初学的时候往往会在某些细节上忽略掉这些……

       比如把一个含有数据的xml表导入或导出系统的时候就是一个十分典型的例子,见下面代码:

       private void 导入ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
            if(diaFile.ShowDialog()==DialogResult.OK)
            {
                if (diaFile.OpenFile()!= null)
                {
                    twoXML.ReadXml(@diaFile.FileName);
                    foreach(DataRow twoRow in twoXML.Tables["UserKey"].Rows)
                    {
                        DataRow newRow = dsXML.Tables["UserKey"].NewRow();
                        newRow["Number"] = twoRow["Number"];
                        newRow["Title"] = twoRow["Title"];
                        newRow["NetAdd"] = twoRow["NetAdd"];
                        newRow["Name"] = twoRow["Name"];
                        newRow["Key"] = twoRow["Key"];
                        newRow["UpDateTime"] = twoRow["UpDateTime"];
                        dsXML.Tables["UserKey"].Rows.Add(newRow);
                    }
                    int n = dsXML.Tables["UserKey"].Rows.Count;
                    for (int i = 0; i < n; i++)
                    {
                        dsXML.Tables["UserKey"].Rows[i]["Number"] = i + 1;
                    }
                    dsXML.WriteXml(@"UserKey.xml");
                    this.Visible = true;
                    MessageBox.Show("XML文件导入成功!", "小侠提醒您:");
                }
               
            }
            else
            {
                this.Visible=true;
            }
        }

       这里出现了两个,一个foreach遍历,后面又一个for循环实现遍历,第一个foreach实现了各个字段的转储,后面的for循环主要是实现排序问题,因为他设计到了每一个数据项。

二,C/S架构中单击双击事件实现功能强大,比如如何实现的超链接功能,触发事件复制,剪切功能?

      这个很简单,是用到的一个触发事件,单击需要操作的单元格,然后再解决方案上面的图标里单击事件,就会看到许多和它相关的时间,十分方便。就可以方便的找 到一个name_CellDoubleClick()的事件,双击即可进入编码,在这里还可以实现比如我们这个时候需要对datagridview中 cell中的网址进行双击打开网页,这个时候需要用在线程中启动一个start()如下:

        private void dgUserKey_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgUserKey.Columns[e.ColumnIndex].HeaderText == "网址")
            {
                string url = dgUserKey.CurrentCell.Value.ToString();                            //把当前cell中的值赋给url
                System.Diagnostics.Process.Start(url);                                                   //启动url
                ShowInf showForm = new ShowInf("正在打开窗体,请等候…");    //弹出对话框提示
                showForm.Show();                                                                                  //显示对话框
                return;                                          //这个时候就可以双击后就可以自动进入浏览器界面打开网页了

                ……
            }

        }

而复制功能的实现完全和上面一样,连过程都很相似,显示当前值重新赋值,然后启动调用,可以用粘贴板clipboard中的属性实现如下:

        if (dgUserKey.Columns[e.ColumnIndex].HeaderText == "用户名")
            {
                string name = dgUserKey.CurrentCell.Value.ToString();
                Clipboard.SetText(name);

              ……

             这说明编程也是很人性化的思路,我想掌握住这个规律对自己的自学能力肯定很有帮助。

三,至于工具栏和右键菜单都是功能性的重复,这个时候可以省掉许多代码,将原功能方法名直接复制过来,然后把传递参数的方式就可以实现,非常简单便捷,比如上面的导入功能在工具栏里相应图标的单击或是双击事件里就可以加入:

          private void toolStripButton1_Click(object sender, EventArgs e)
        {
            导入ToolStripMenuItem_Click(sender, e);       //把相应的object和eventargs去掉,参数e,sender传送,相当于sender被e了
        }

四,页面调用问题,就是从一个窗体上去调用另一个窗体的时候,常见两种情况:一是无参的,可以直接建立对象然后打开对象即可,如:PinTu pinTu = new PinTu();    然后pinTu.ShowDialog();即可,如果有数据传递,就需要做一些调整,把参数传递过来。比如主界面打开一个修改对话框的时候:

          private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int n = dgUserKey.CurrentRow.Index;                              //当前数据表索引
            this.dgUserKey.CurrentCell = dgUserKey[0, n];              
            string id = dgUserKey.CurrentCell.Value.ToString();         //当前cell值
            KeyChange keyChange = new KeyChange(id,dsXML);     //注意这里就用到了两个参数id和dsxml
            keyChange.ShowDialog();               //可以打开修改界面了

         }

五,菜单栏里各种图标的添加都是通过标签属性中的image来直接实现,虽然简单挺花时间的,窗体皮肤是通过skinengine控件实现的,右下 角的图标显示比如QQ等右下角图标都是通过notifyicon控件实现的,可以通过它的name_MouseDown()事件来单击显示常用菜单,都很 简单,就不记录。

六,总之,美工多是属性、控件等,代码多用到事件、触发等。

Fiori Elements 的 Adapting the UI: Analytical List Page 全解析与实战 摘要:本文详细介绍了如何通过SAP Fiori elements的UI Adaptation功能对Analytical List Page(ALP)进行细粒度适配。重点讲解了页头过滤区、图表区域、表格区域等关键组件的可配置属性,包括过滤区折叠/固定、图表类型限制、表格滚动阈值等实用功能。文章强调这些适配均可通过可视化工具完成,无需修改业务代码,并提供了典型场景的实践清单。适用于SAP Fiori elements for OData V2项目,建议配合SAP Fiori tools的Adaptation E 阅读详情

相关推荐

深入CRSF协议数据包:手撕STM32代码,教你像调试串口一样分析ELRS遥控数据流

本文深入解析CRSF协议数据包,通过手撕STM32代码,教你如何像调试串口一样分析ELRS遥控数据流。从硬件准备到数据包捕获状态机设计,再到高级数据分析技巧和实战应用,全面覆盖CRSF协议的解析与优化,帮助开发者构建稳定可靠的通信系统。

weixin_29194693的博客 337

一种编程语言必备的功能

虽然现在有很多编程语言,但我们学过一些后就会发现,无论什么编程语言,都需要解决一些相同的问题,就是编程过程中必备的功能,下面就来总结一下编程语言的一些必备技能。 1.文件操作 文件操作基本是所有语言都要实现的功能,因为我们在日常编程总会有文件相关操作,比如增删改查等。 2.多线程 单线程往往不利于发挥现代cpu的多核性能,连node都有多线程的解决方案,足以见多线程的重要性,所以几乎所有主流的编程语言都有相关方案。 3.异步 同步操作在一些场景下性能太差,或者根本没有必要,而且似乎异步更接近现实

人太健忘了,需要有个地方记录 2550

CNN卷积神经网络手写数字识别实例及代码详解

本文的代码来自githup的Deep Learning的toolbox,是用Matlab实现的。感谢该toolbox的作者付出和分享。 我在应该该代码进行训练时,出现一些报错,如expand函数应用不对,flipall函数未定义等问题,对这些问题进行了修正,完成网络训练和验证。 本文mnist_uint8.mat的获取可以参照我的另一篇博客:MNIST数据库处理--matlab生成mnist_

VivienFu的专栏 6万+

揭秘B站视频下载神器:BilibiliDown如何实现一键搞定高清视频收藏

你是否曾经为了收藏B站上的优质视频而烦恼?手动保存不仅效率低下,还经常遇到画质损失、无法批量操作的问题。今天,我要向你介绍一款专业的B站视频下载工具——BilibiliDown,它能够完美解决这些痛点,让你轻松实现高清视频的批量下载和智能管理。 ## 一、痛点剖析:传统视频保存为何如此低效 ### 录屏的无奈:画质与效率的双重损失 许多用户习惯用录屏软件保存B站视频,但这种“曲线救国”的方式

gitblog_00746的博客 921

从时序精度到视觉盛宴:PY32F030驱动WS2812的工程艺术与避坑指南

本文深入探讨了基于PY32F030微控制器驱动WS2812智能LED的完整解决方案。通过精确的时序控制、硬件PWM结合DMA传输技术,实现了稳定可靠的驱动效果,并提供了电源管理、信号完整性和常见问题排查等实用避坑指南,帮助开发者轻松应对严格的纳秒级时序挑战。

wind6的博客 120

保姆级教程:在阿里云ECS上用Docker一键部署EMQX MQTT服务器(Ubuntu 20.04)

本文提供在阿里云ECS上使用Docker一键部署EMQX MQTT服务器的详细教程,涵盖从实例创建、Docker环境配置到EMQX部署与优化的全流程。适合物联网开发者快速搭建高效、安全的MQTT消息服务器,适用于智能家居、工业物联网等场景。

weixin_28739079的博客 308

【课程设计】基于SSM框架的校园兼职管理系统设计与实现 计算机毕业设计源码98768

该系统主要包含三个角色:学生用户、企业用户和管理员用户。学生用户可以通过系统浏览兼职岗位、查询校园资讯、将喜欢的职位收藏、点赞和申请等操作。企业用户可以通过发布兼职岗位、浏览校园资讯和公告、审核岗位申请。管理员用户则负责后台管理,包括兼职岗位的增删改查、申请状态的更新、用户信息的维护以及兼职数据的统计分析等功能.....

Biye_Design的博客 7155

金智维KRPA实战:Excel自动化数据处理全流程解析

本文详细解析了金智维KRPA在Excel自动化数据处理中的全流程应用,涵盖COM接口和文件读写两种核心技术方案,以及销售报表生成、数据清洗和可视化仪表盘等实战案例。通过企业级应用的异常处理、性能优化和安全合规实践,显著提升数据处理效率和准确性,助力企业降本增效。

weixin_30329623的博客 598

3 分钟让微信电脑版消息无法撤回:RevokeMsgPatcher 防撤回补丁实用指南

RevokeMsgPatcher 是一款免费的 Windows 平台防撤回补丁工具,支持 PC 版微信、QQ 和 TIM,打上补丁后对方点击撤回也不再生效,消息内容会原样留在聊天记录里。目前最新版本是 2.1,微信还能顺手开启多开功能。如果你正在被"消息撤回怎么办"困扰,这套流程 3 分钟就能跑完。 ## 🕒 3 分钟快速上手:一键打补丁 前提条件:系统为 Windows 7 或更高(不支持

gitblog_00590的博客 409

【保研经验】北科自动化到北大工学院

作者:办公室某学长 谢邀。。。作为拖延症晚期患者,希望能在我科开学前写完。 先简单介绍一下我的保研过程,申请了清华叉院&amp;北大叉院大数据&amp;北大信科计算机夏令营,三者都没入营;申请了自所夏令营(自所来宣讲时未交简历,这是重大错误),给了第二批补录但没去;最终九推去了北大工学院。我的这次保研最终成功的经历可以说有一定运气成分,不具有普适性,但在前期准备过程中还是有经验可以分享的。 ...

ruanjianbu的博客 1796

【自监督学习完整教程】第 1 章:初识自监督学习

摘要: 自监督学习(SSL)是一种利用无标签数据自动生成伪标签进行模型训练的方法,有效降低了人工标注成本。本文对比了监督学习、无监督学习和SSL的差异,重点阐述了SSL通过设计PretextTasks(如图像旋转预测)从数据中提取深层特征的原理。实践部分以PyTorch实现图像旋转预测任务为例,展示了SSL的训练流程。实验表明,SSL能够学习通用视觉特征,适用于计算机视觉、自然语言处理等领域,尤其在标注数据稀缺的场景中表现优异。

u012133341的博客 260

【课程设计】海南黎族风俗展示系统-计算机毕业设计源码11640

系统主要面向两类用户:普通用户和管理员。对于普通用户,系统提供了丰富的黎族文化展示功能,包括文字、图片、视频等多种形式的内容呈现,用户可以根据不同的类别进行浏览和搜索,还可以对感兴趣的内容进行评论和点赞,增强了用户与系统之间的互动性。对于管理员,系统提供了完善的内容管理功能,管理员可以方便地添加、修改、删除黎族文化的介绍内容,同时还可以对用户的评论进行审核,确保系统内信息的准确性和合规性。

Biye_Design的博客 1939

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 417

PalEdit终极指南:如何快速编辑和生成PalWorld幻兽存档

PalEdit是一款专为PalWorld设计的存档编辑工具,让你能够轻松修改和生成游戏中的幻兽。无论你是想要创建完美的战斗伙伴,还是需要调整幻兽属性以适应特定游戏场景,PalEdit都能为你提供简单直观的解决方案。这个开源工具完全免费,支持Windows平台,让你彻底掌控自己的PalWorld游戏体验。 ## 🎯 项目价值与核心优势 ### 为什么选择PalEdit? 在PalWorld游

gitblog_00305的博客 918

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

基于Java Web的选课调查系统的设计

本文介绍了基于Java Web技术的选课调查系统开发,采用Spring Boot框架和MySQL数据库。系统开发过程包括需求调研、架构设计、技术选型、前后端实现及测试部署等环节。核心功能涵盖选课管理、个性化推荐、数据分析和决策支持,注重安全性、性能和用户体验优化。文章展示了系统部分核心代码和界面效果图,体现了从数据库操作到用户交互的完整实现。该系统旨在为高校提供高效的选课管理解决方案,通过持续的用户反馈优化功能,同时为教育决策提供数据支持。项目源码和数据库可联系作者获取。

qq_1406299528的博客 532

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

基于Spring Boot的校园志愿者服务系统的设计与实现 计算机毕业设计源码74936

系统采用Java语言开发,结合MySQL数据库进行数据存储与管理,具备良好的扩展性和稳定性。针对学生用户,系统提供了志愿者活动的浏览、报名、活动评价等功能,方便学生积极参与校园志愿服务并记录个人服务经历。对于管理员,系统实现了活动发布、志愿培训管理、活动审核、数据统计与查询等核心功能,便于对校园志愿者活动进行全面高效的管理...

Biye_Design的博客 258

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

终极指南:如何在3DS上免费畅玩NDS游戏库

你是否曾经翻出尘封的NDS游戏卡带,却发现设备早已不在身边?或者想重温经典却不愿再购买昂贵的实体卡带?nds-bootstrap正是为你量身打造的完美解决方案!这个开源项目让你能够在现代3DS设备上原生运行NDS游戏,无需模拟器,无需额外硬件,只需一张SD卡就能拥有完整的NDS游戏库。 ## 你的游戏时光机:重新定义怀旧体验 想象一下这样的场景:你坐在沙发上,手持3DS,屏幕上正运行着《马里奥

gitblog_00421的博客 989

在 nginx 中使用 JavaScript

nginx 中要提供编程能力第一想到的是lua,但在2016年nginx官方就已经在尝试将js引入nginx中了。现如今njs模块已经是nginx官方正式模块之一,并且也一直在不断迭代更新中。njs是 JavaScript 语言的一个子集,可以扩展 nginx 的功能。njs 是根据 ECMAScript 5.1(严格模式)创建的,其中包含一些 ECMAScript 6 及更高版本的扩展。其合规性仍在不断改进。

xuxian的博客 1683

3步开启你的Switch游戏之旅:yuzu模拟器完全使用手册

你是否曾梦想在电脑上畅玩Switch游戏?yuzu模拟器正是实现这个梦想的完美工具。作为目前最受欢迎的任天堂Switch模拟器,yuzu让你能够在Windows、Linux和Android设备上体验数千款Switch游戏。这个开源免费的模拟器项目不仅稳定流畅,还持续更新,为玩家提供了全新的游戏体验方式。 ## 为什么选择yuzu?三个让你无法拒绝的理由 **跨平台兼容性**:无论你使用Wind

gitblog_00147的博客 1026

【课程设计】SSM毕业生分配系统-计算机毕业设计源码32053

1.用户管理模块:涵盖注册、登录、信息管理和权限管理。用户通过学号/工号和初始密码注册,登录系统支持密码记忆与找回。管理员可管理用户信息,分配权限。 2.毕业生信息管理模块: 个人信息管理:学生填写基本信息,管理员批量导入。 去向信息填报:学生选择毕业去向并填写详细信息,上传证明材料。去向包括就业、升学、出国等,学生可修改删除。 去向信息审核:教师审核学生去向信息,可补充修改,结果分为通过、驳回和待审核。 证明材料管理:学生上传、下载、删除证明材料,教师和管理员可查看下载。 3.就业指导与招聘信息管理模块

Biye_Design的博客 3181

【课程设计】springboot驾校信息管理系统-计算机毕业设计源码

1. 学员端功能 (1) 个人信息管理 查看个人信息:学员可以查看自己的基本信息(如姓名、学号、联系方式等)。 修改个人信息:修改联系方式、地址等信息。 查看学员状态:包括报名状态、课程进度等。 (2) 课程安排与预约 预约学车课程:学员可以根据教练的空闲时间预约自己想学的课程。 查看课程安排:可以查看每周的课程安排,方便学员安排自己的时间。 课程反馈:学员可以对已学的课程进行评分和反馈。 (3) 考试与成绩查询 查看考试安排:学员可以查看理论考试和实操考试的安排。 查看成绩:学员可以查看自己考试的成绩,合

Biye_Design的博客 1万+

Task 模板引擎完全指南:用 Go text/template 打造动态 Taskfile

Task 的模板引擎基于 Go 标准库 [text/template](https://link.gitcode.com/i/d0212479431377d6962f360833391ada) 构建,通过双花括号 `{{ ... }}` 在 Taskfile 的大多数字符串值中执行插值、条件判断、循环与函数调用。本指南是 Task 模板系统的权威参考:它将完整介绍模板的基本用法、始终可用的特殊变量

gitblog_00665的博客 989

为什么你需要STranslate?这款开源翻译工具彻底改变你的跨语言工作流

还在为语言障碍而烦恼吗?每天面对各种文档、网页、图片中的外语内容,你是否感到束手无策?STranslate开源翻译工具为你提供了一站式解决方案!这款基于WPF开发的即用即走翻译软件,集成了翻译、OCR识别、语音合成等多项实用功能,让跨语言沟通变得前所未有的简单高效。无论是学生、研究人员、商务人士还是普通用户,STranslate都能成为你不可或缺的语言助手。 ## 痛点分析:传统翻译工具的局限性

gitblog_00416的博客 374

暗黑破坏神2存档编辑神器:5分钟打造你的专属游戏体验

还记得那些为了刷一件心仪装备而反复刷怪的日子吗?还记得因为属性点加错而不得不重新开档的无奈吗?如果你是一名暗黑破坏神2的忠实玩家,那么今天我要向你介绍一个能彻底改变你游戏体验的利器——**d2s-editor**,一款基于Vue.js开发的免费开源暗黑2存档编辑器。 ## 🎯 你的游戏痛点,这里都有解法 想象一下这样的场景:你花费了数十小时打造的角色,却因为一个错误的技能选择而变得不够强力;

gitblog_00162的博客 130

Storybook Story 级装饰器实战:用 decorators 为单条 Story 精确包装渲染上下文

本文以 Storybook 官方文档中用于"单条 Story(story-level)装饰器"的示例片段 [button-story-decorator.md](https://gitcode.com/GitHub_Trending/st/storybook/blob/e8044dbefad93f4fd48a5a378693428ab0e5dbc8/docs/_snippets/button-st

gitblog_00287的博客 217

开源跨平台音乐播放器LX Music:打破平台壁垒的音乐体验解决方案

你是否曾因不同音乐平台的会员限制而烦恼?是否希望有一款软件能整合所有音乐资源,让你在一个界面中畅享全网音乐?LX Music桌面版正是为解决这些痛点而生的开源音乐播放器。基于Electron和Vue3构建,这款软件不仅完全免费开源,还支持Windows、macOS和Linux三大主流操作系统,为用户提供了一站式的音乐播放体验。 ## 多平台音乐资源的无缝整合体验 在当今音乐市场被各大平台割裂的

gitblog_00833的博客 429
上一篇: c# 如何实现文件与文件夹加密收藏
下一篇: Excel操作类C#版
chenfujun2000
博客等级 码龄19年 8粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值