一个差劲的软件设计

devtools/2025/3/13 7:08:17/

项目概况:

         之前自己设计并开发了一个用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/devtools/166706.html

相关文章

《C++探幽:运算符重载》

《C探幽:运算符重载》 一、引言 在C中,运算符重载是一项非常强大的特性,它允许程序员重新定义运算符在自定义类型上的行为。通过运算符重载,我们可以让自定义类型(如类和结构体)的对象像内置类型一样使用运算符&…

云原生服务网格:微服务通信的智能基础设施

引言:从代码耦合到透明化通信的范式升维 Istio管理着超过百万服务端点,Google Anthos通过服务网格实现跨云统一控制面。Envoy每日处理数万亿请求,AWS App Mesh支持万级虚拟节点互联。LinkedIn借助服务网格将故障定位时间缩短至秒级&#xff…

【网络编程】HTTP网络编程

13.1 HTTP 简介 HTTP(Hyper Text Transfer Protocol,超文本传输协议)是用于从万维网(WWW:World Wide Web) 服务器(简称Web 服务器)传输超文本到本地浏览器的传送协议,基于TCP/IP 通信协 议来传递数据 (HTML 文件、图片文件、查询结果等)。 13.2 HTTP 的工作原理 …

洗鞋小程序(源码+文档+讲解+演示)

引言 随着生活水平的提高,人们对洗鞋服务的需求日益增长。洗鞋小程序作为一个智能化平台,为用户提供了便捷、高效的洗鞋服务。本文将详细介绍该小程序的功能、技术架构以及其在提升用户体验中的优势。 系统概述 洗鞋小程序采用前后端分离的架构设计&a…

当输入没有注册的用户名和密码,直接跳转到了一个404页面是怎么回事

一、问题描述: 当我输入没有注册的用户名和密码,直接给我跳转到了一个404页面,而不是显示提醒弹窗“账号或密码错误!” 我想要的正确效果如下: 二、分析 1.点击登录时发现后端在处理请求时抛出了一个异常&#xff1a…

ubuntu中用docker下载opengauss

1.安装docker sudo apt install docker.io2.拉取opengauss镜像 sudo docker pull enmotech/opengauss3.创建容器 sudo docker run --name opengauss --privilegedtrue -d -e GS_PASSWORDEnmo123 enmotech/opengauss:latest3.5.如果容器停止运行(比如关机了&#…

如何使用postman就可以查看base64图片

一、应用场景 纯后端开发,想要知道自己返回的图片数据是否正常返回,使用简单的工具就可以解析 二、postman介绍 Postman 提供直观的图形用户界面,使用户能够轻松构建和发送 HTTP 请求。能够编写脚本,进行自动化测试,是…

2020年蓝桥杯第十一届CC++大学B组(第一次)真题及代码

目录 1A:跑步训练(填空5分_模拟) 2B:纪念日(填空5分_日期计算) 3C:合并检测(填空10分_数学) 4D:REPEAT程序(填空10分_模拟) 5E&a…