public Form1()
        {}
和 PUBLIC FORM1_LOAD()
{}
有什么区别呢?
内容写在他俩中有什么区别?   最好举个例子给我看下
还有
  private void printbutton_Click(object sender, EventArgs e)
        {
            using (Brush b = new SolidBrush(Color.Black))
            {
                Graphics g = this.CreateGraphics();
                g.DrawString("123456789", new Font("3 of 9 Barcode", 16), b, new Rectangle(10, 10, 200, 200));//3 of 9 Barcode这个是你安装的字体的名字,在C:\WINDOWS\Fonts下查看
            }
        }
我写在BUTTON中可以执行,也可以画出条码,但是写在LOAD中为什么不能在程序刚启动的时候直接画出来呢?

解决方案 »

  1.   

    构造方法就是构造一个对象而已,而LOAD() 是加载控件,相当于oo里的赋初值的方法!
      

  2.   

      Form.Load   事件处理方法用于处理在对象实例化之后的事情,毕竟对象已经实例化了,所以你在Load的操作会触发事件,而构造函数则不会   
    构造函数和Load都会先后执行。一般来说,构造函数先于Load事件
      

  3.   

    构造函数:将构造一个对象,但这个对象不会显示到界面上来。
    load:使用load前提是这个对象已经存在,load只是把这个对象要显示到显示的信息显示出来。
      

  4.   


    执行时先执行构造函数比如
    LoginForm myFrom = new LoginForm();    1
    myForm.Show();                         21时候定义类对象并实例化new,这个时候就调用了构造函数
    2时候显示画面才加载其控件,比如上面的按钮了,文本框了对应你说的点按钮可以画,放load里面不行
    不应该啊
    可能是你其他地方有什么东西执行影响到了你可以把全部代码粘出来看看
      

  5.   

    构造函数:有
    load:一般用来初始操作“有”了的东西
      

  6.   


    有道理。
    构造函数是在最开始执行的,创建了一个对象。
    在此之后才可以执行其他函数,如load()。
      

  7.   

    load是一个事件吧 大概可以这样解释
    我猜是在构造函数调用里调用了load
      

  8.   

    load是一个事件吧 只能被触发才被调用
      

  9.   

    Load是一个事件,构造函数是个语言上面的概念。
    oo嘛,没有对象,就没有对象去响应事件。
      

  10.   

    谢谢大家对第1个问题的评论,我也总结下大家所说的东西,大家看下对不对,也方便后来的人学习,谢谢各位
    构造函数就拿窗体来说,他是属于先实例化各个控件,但是不加载的,只是相当于NEW了下,然后当LOAD的时候就是显示窗体的时候同时发生,可以说构造函数是执行在LOAD事件之前对了 我的第2个问题是怎么样的呢?
            public Form1()
            {
             
                InitializeComponent();
                //this.FormBorderStyle = FormBorderStyle.None; 
                this.printbutton.Text = "Print Form";
                printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
            }
            Bitmap memoryImage;        private void printbutton_Click(object sender, EventArgs e)
            {
                using (Brush b = new SolidBrush(Color.Black))
                {
                    Graphics g = this.CreateGraphics();
                    g.DrawString("123456789", new Font("3 of 9 Barcode", 16), b, new Rectangle(10, 10, 200, 200));//3 of 9 Barcode这个是你安装的字体的名字,在C:\WINDOWS\Fonts下查看
                }
            }        private void CaptureScreen()
            {
                Graphics myGraphics = this.CreateGraphics();
                Size s = this.Size;
                memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
                Graphics memoryGraphics = Graphics.FromImage(memoryImage);
                memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
            }        private void printDocument1_PrintPage(System.Object sender,
                   System.Drawing.Printing.PrintPageEventArgs e)
            {
                e.Graphics.DrawImage(memoryImage, 0, 0);
            }        private void button1_Click(object sender, EventArgs e)
            {
                int i=0;
                while (i < 2)
                {
                    this.label1.Text = "*123456789*";
                    MessageBox.Show(i.ToString());
                    CaptureScreen();
                    //printDialog1.ShowDialog();
                    printDocument1.Print();
                    i++;
                }
            }        private void Form1_Load(object sender, EventArgs e)
            {
                  //如果代码写在这里
            }      我画图代码写在这里为什么不执行呢?他画不出条码,但是现在的BUTTON_CLICK中就可以执行,为什么呢?希望大家讲解下谢谢
      

  11.   

    结贴去了  谢谢大家 
    最后告诉大家个问题,我已经研究出来,打印条码的时候是不可以用绘图的方式打印的,因为打印出来的是图形,打印机会按照图形的方式来打印,所以精度根本不能达到条码的打印精度,所以用画图的方式是不可以搞定的,所以画图是只能看而不能打,打出来也读不出来,
    解决办法:   1:管厂家要DEMO,和DLL那个里面有例子,这样调用DLL的话,走的是打印机驱动,由打印机自己来完成           任务;内部结构是他自己发送自己的打印机命令给打印机,这点不是咋们应该管的,他自己完成
                 2:方法就是管厂家要打印机操作数指令,然后不走驱动,也就是自己把打印参数发送到串口或者并口,这个方法麻烦的就是,有的厂家打印参数说明是英文版,而且没有DEMO这点有的时候很郁闷,建议大家用波斯德的打印机,他们厂家提供DLL和DEMO直接添几个参数就搞定了有不明白或者有什么问题的兄弟联系我QQ 804206885
      

  12.   

    我设置断点跟踪了一下,跟不到load方法,只能执行构造方法