C#中form1.cs和form1.Designer.cs前一个是设计语言代码,第二个呢?form1.cs正确而form1.Designer.cs错误

2024-11-19 10:55:53
推荐回答(5个)
回答(1):

program.cs是程序入口,也就是Main函数。

form1.cs是实现功能的代码,包括你的自定义方法和事件。

form1.Designer.cs是你的画面的设计代码,一般由系统自动生成,也可以手动修改,严格意义上讲,把这部分代码拿到其他文件里也一样可以,不强制。

你删的那句是关联一个label的Click事件的,因为你form1.cs里没写这个labelshouru_Click
方法,所以出错,你删除了,就不关联这个事件了,所以就好了。
一般都写在form1.cs里,因为写到别的文件里会存在调用其他类对象的问题,相对比较麻烦。但一些共通的方法可以抽出到一个单独的文件里,供整个工程调用。

回答(2):

首先,以.cs结尾的文件都是代码。
1.program的作用?:在C#窗体程序下,program.cs是整个程序的入口,换句话说编程开始main()函数在这个文件里。而form1是一个窗体类(class),程序的执行是由program开始,在主函数main()中新建了form1的实例(或者说对象),紧接着程序的运行是操作这个form1对象(比方说点击、按键等事件)。
2.编程是在form1.cs中写?:我们常见的简单程序设计,比方说计算器,因为程序简单,只需要一个窗体就可以进行,所以人机交互(点击、输入)、界面设计(显示,绘图)都是在这个窗体对象上进行的,所以都写在form1的类里。如果我们做的是多窗口程序,比方说登录界面和管理界面(当然这也可以在一个窗体上实现,不过这里要说多窗体的问题),我们可以新建两个窗体类,LoginForm和ManagerForm,这样对于登录的代码都写在LoginForm.cs中,管理界面的代码都在ManagerForm.cs之中。
同时program.cs中有个 Application.Run(new Form1());也要修改成你想要的程序初始窗口,Application.Run(new LoginForm());
3.Form1.Designer.cs和Form1.cs区别?:前者主要是完成界面的初始化作用的,后者完成正常的方法和函数。前者主要为界面初始化服务,在设计器中拖放的控件(实例)、属性、事件响应等,系统会自动生成代码在Designer文件中。从本质上说,两个文件是同样的作用,文件内容不同,完整的类应该是两个文件的总和(两个文件不可以重复定义同一个东西,会出错),只是分成两个文件写了,一个是设计器拖放而系统生成的,另一个是自己写。
4.关于删除designer那句话的问题?:由3我们可以知道,Form1.Designer.cs也只是一个普通的文件,其中主要是设计器产生的代码,而提问者删除的这句话:this.labelshouru.Click += new System.EventHandler(this.labelshouru_Click); 说的是当前窗体Form1的labelshouru控件添加一个名为labelshouru_Click的函数关联(或者说添加了“委托”),简单说添加了一个“事件响应函数”。 添加事件响应函数时,系统通常会在form1.cs中添加函数定义(你写函数内容的地方),同时会在form1.Designer.cs中添加类似上面那句的函数关联,这样控件才会对事件的响应执行你所写的函数。
当你删除了函数定义时,也就没有了声明和定义,那在designer中的函数关联就失效了,且其中的函数名时错误的(因为函数没了,函数名就报错了),所以form1.cs是没有代码错误的,form1.designer.cs出现错误。因此在删除某些设计器或系统产生的函数时,你还需要删除它的函数关联或者其他引用的地方

回答(3):

form1.cs--代码部分
form1.Designer.cs--界面部分
program.cs---包含Main()函数的程序主入口
------------------------------------------------------------
你打开program.cs就会发现,是先从program.cs启动,然后再new了一个Form1();因为form1.Designer.cs中除了控件的属性外,还有委托,就是你写的this.labelshouru.Click += new System.EventHandler(this.labelshouru_Click);
这样的,如果你只是删除这句话将会报错,还需要删除委托的方法,即你只要转到form1.cs中将委托的方法EventHandler()括号里面的那个函数即labelshouru_Click删除!

回答(4):

  • 前一个是设计语言代码,第二个呢?

    后一个也是

  • 删掉了这句就好了??为何 ???
    因为你双击产生事件的时候IDE会在Designer里面生成注册事件的代码,而你删除控件的时候不会自动删除这代码。

  • program.cs是干嘛的???类似于C语言的main函数,是C#必须的入口。

  • c#编程窗体程序编程都是在form1.cs里面进行吗??完全不是,你可以把form1改成form2或者其他任意的名称。

回答(5):

检查form1.Designer.cs是否存在labelshouru_Click事件处理方法。