一个差劲的软件设计

news/2025/3/15 1:38:04/

项目概况:

         之前自己设计并开发了一个用C#开发的上位机软件,整个软件只有一个Form,一个TabControl,3个TabControlPanel,总共100多个lable、textbox、ListBox等控件都放在这3个TabControlPanel里。

问题:

     1. Designer.cs文件特别大,接近1万行。

     2. 增加控件比较难。本来在visual studio里添加一个控件特别简单,拖拽就行。但是,在这个项目里,想添加一个新的按钮,一打开Form文件,就自动修改了Form、.Designer和.resx文件,改了一些位置信息,导致控件错位,所以如果想添加新的控件,都不敢直接在Form上拖拽控件,而是在Designer.cs文件里,直接写新控件的代码,这样导致效率特别低,调个位置,得来回运行好几次才能调好。

   3. 修改和查找控件也比较难。在100多个控件里,想找个一个控件也并不容易。

   4. 有同样的功能写了2遍,维护也困难。

解决方案:

    1. 将页面都拆成多个的用户控件。

    2. 使用成熟的框架。如prism。通过Region切换。


http://www.ppmy.cn/news/1579192.html

相关文章

【Python】为什么要写__init__.py

文章目录 PackageA(__init__特性)应该往__init__.py里放什么东西?1、包的初始化2、管理包的公共接口3、包的信息 正常我们直接导入就可以执行,但是在package的时候,有一种__init__.py的特殊存在 引入moduleA.py,执行main.py&…

用Deepseek写一个五子棋微信小程序

在当今快节奏的生活中,休闲小游戏成为了许多人放松心情的好选择。五子棋作为一款经典的策略游戏,不仅规则简单,还能锻炼思维。最近,我借助 DeepSeek 的帮助,开发了一款五子棋微信小程序。在这篇文章中,我将…

《C#上位机开发从门外到门内》2-4:Modbus协议

文章目录 一、引言二、Modbus协议概述2.1 Modbus协议的起源与发展2.2 Modbus协议的基本特点2.3 应用领域 三、Modbus通信原理详解3.1 Modbus RTU原理3.1.1 数据帧结构3.1.2 数据传输与时序3.1.3 错误检测 3.2 Modbus TCP原理3.2.1 数据封装3.2.2 通信机制3.2.3 与RTU模式的区别…

cocos creator 3.8如何在代码中打印drawcall,fps

​Profiler 模块 新版的cocos creator3D已经把dc,fps统一放到这个Profiler模块里了,在源码的位置是: Web路径:engine/cocos/profiler/profiler.ts 原生路径:engine/native/cocos/profiler/Profiler.cp Profiler 是 C…

HTML网上商城项目(sqlite3)

一.功能 二.sqlite3函数 【1】sqlite3_exec int sqlite3_exec( sqlite3* db, // 数据库连接句柄 const char* sql, // 要执行的 SQL 语句 int (*callback)(void*, int, char**, char**), // 回调函数 void* arg, …

RocketMQ开发实战篇

一、生产者开发指南 1. Java API使用详解 在使用RocketMQ进行消息生产时&#xff0c;首先需要引入相关的依赖。在Maven项目中&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>org.apache.rocketmq</groupId><artifactI…

Redis 哨兵模式详解:实现高可用与自动故障转移

目录 引言 1. 什么是 Redis 哨兵模式&#xff1f; 1.1 定义 1.2 核心概念 2. Redis 哨兵模式的工作原理 2.1 监控 2.2 故障检测 2.3 故障转移 2.4 通知 3. Redis 哨兵模式的配置方法 3.1 配置文件 3.2 启动哨兵节点 4. Redis 哨兵模式的使用场景 4.1 高可用性 4.…

【Go语言圣经1.5】

目标 概念 要点&#xff08;案例&#xff09; 实现了一个简单的 HTTP 客户端程序&#xff0c;主要功能是&#xff1a; 读取命令行参数&#xff1a;程序从命令行获取一个或多个 URL。发送 HTTP GET 请求&#xff1a;使用 Go 内置的 net/http 包&#xff0c;通过 http.Get 函…