本人之前搞下位机编程, 现初学C# .NET, 属于菜鸟中的菜鸟, 请各位不吝赐教, 谢谢!!
下面为本人理解的, 不知对不对:
程序运行后, 首先执行main函数
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
运行到"Application.Run(new Form1());"时, 调用Form1的构造函数:
public Form1()
{
InitializeComponent();
}
此初始化函数"InitializeComponent", 会初始化本form中所使用的所有的控件
那么问题来了, form为一控件, 有构造函数, 但其中所用的其他控件的构造函数呢? 在InitializeComponent函数中未发现
是不是编译环境默认构造了, 还是说通过new和下面的代码代替了构造函数呢?
谢谢!!!!
------解决思路----------------------
楼主是什么意思,如果要看源码似乎只能反编译了,new 对象就是调用的构造函数.
------解决思路----------------------
在design.cs里面有各种声明,至于构造函数那是看不到的,因为没源码,但你可以在控件类声明上F12看类的概要说明
------解决思路----------------------
已拖放好的组件都在InitializeComponent()中,例如下面的listView1 组件。当然也可以在窗体的构造函数中手工初始化子控件。
this.listView1 = new System.Windows.Forms.ListView();
this.SuspendLayout();
//
// listView1
//
this.listView1.AllowDrop = true;
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView1.Location = new System.Drawing.Point(0, 0);
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(292, 253);
this.listView1.TabIndex = 0;
this.listView1.UseCompatibleStateImageBehavior = false;
this.listView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);
------解决思路----------------------
F12看到的是所有public和protected函数,如果看不到构造函数,并不代表没有,因为可以是默认空构造函数,也可以是private ,internal这种声明作用域的构造函数