Form类写的代码太多了,怎么办?

杨友山
博客专家认证
2011-09-20 03:04:21
我做了一个窗体,没有用自定义控件,都是拖了些控件放到上面的。因为有两个界面所以放了两张panel,根据事件切换。
代码有这么几种:
1、每个控件的所有背景图片加载,控件的事件。
2、功能函数。这个特别多。包括各个界面切换是的变换。
这样下来写完后有2千多行,这个怎么精简,分开一下呢?
...全文
339 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_graceless 2011-09-21
  • 打赏
  • 举报
回复
需要这样写就就这写,可能重构就重构。推荐大师的书《重构,改善即有的代码设计》
灰阶 2011-09-21
  • 打赏
  • 举报
回复
学会分层!!!
yanpengxiang 2011-09-21
  • 打赏
  • 举报
回复
设计问题 一个form不应该这么多行 试试用ui空间 精简代码 一定重复的特别多
五更琉璃 2011-09-21
  • 打赏
  • 举报
回复
你在建个CS文件不就得了
风骑士之怒 2011-09-21
  • 打赏
  • 举报
回复
业务代码写到专门的复用类库中去
kid5 2011-09-21
  • 打赏
  • 举报
回复
看看设计模式
杨友山 2011-09-21
  • 打赏
  • 举报
回复

<a href="http://blog.csdn.net/yysyangyangyangshan">测试</a>
杨友山 2011-09-21
  • 打赏
  • 举报
回复
<a href="http://blog.csdn.net/yysyangyangyangshan"></a>
杨友山 2011-09-21
  • 打赏
  • 举报
回复
<url="http://blog.csdn.net/yysyangyangyangshan"></url>
究天人之际 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lin0601 的回复:]
定义一个类 调用类中的方法.操作数据库的代码不要直接写在页面中.这样比较简明
[/Quote]

同意,这样什么问题都解决了
cjh200102 2011-09-20
  • 打赏
  • 举报
回复
把代码分成类
youzelin 2011-09-20
  • 打赏
  • 举报
回复
推荐一本书《重构》
hen_ai_hen_ai_ni 2011-09-20
  • 打赏
  • 举报
回复
真是,2000多行还叫多~~~~
萧炎 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yysyangyangyangshan 的回复:]
引用 9 楼 zyloveyrf 的回复:
就想三层一样 直接调用Test里面封装好了的方法

主要是,那些控件的事件写了很多行,这封装不了啊
[/Quote]
不可能,行再多也可以封装 只是时间花的多点而已
大不了多传几个参数就是
举一个简单的例子
你以前的
private void botton1_Click(object sender, EventArgs e)
{
string name=textBox.Text;
string pwd=textBox.Text;
.......假如以下是根据用户名和密码登录的操作
}

那么 你就可以在Test类里面这样写
public void Login(string name,string pwd)
{
执行登录操作
}

那么在你用的地方就这样写就可以了
private void botton1_Click(object sender, EventArgs e)
{
string name=textBox.Text;
string pwd=textBox.Text;
//.......假如以下是根据用户名和密码登录的操作
Test t=new Test();
t.Login(name,pwd);
}
逐风 2011-09-20
  • 打赏
  • 举报
回复
只能说你设计的时候,没设计好。。
杨友山 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zyloveyrf 的回复:]
就想三层一样 直接调用Test里面封装好了的方法
[/Quote]
主要是,那些控件的事件写了很多行,这封装不了啊
  • 打赏
  • 举报
回复
最好的就是主界面里值包含具体方法的调用
而这些具体的方法呢 就提前封装在类中,对主界面提供各种接口一样
要跑步 就在主界面中调用 运动类中的跑步方法
要吃饭 就在主界面中调用 生活类中的吃饭方法

这样 低耦合 以后修改也方便.
萧炎 2011-09-20
  • 打赏
  • 举报
回复
就想三层一样 直接调用Test里面封装好了的方法

举一个简单的例子
public void Bind()//可以传参数,也可以重载,看LZ需求
{
//绑定数据库的值
//假如有1000行代码
}
在你需要的地方
Test test=new Test();
test.Bind();//这就节约了998行代码 如果传参在看需求
杨友山 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lin0601 的回复:]
定义一个类 调用类中的方法.操作数据库的代码不要直接写在页面中.这样比较简明
[/Quote]
这也是,根据规范什么的,一般界面的类都写那些部分好呢?
萧炎 2011-09-20
  • 打赏
  • 举报
回复
--! 那LZ可以封装成方法啊 用一个单独的类来封装这些方法
加载更多回复(6)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧