本帖最后由 zhksoft 于 2013-08-10 23:48:52 编辑

解决方案 »

  1.   

    意义就是对初学的我来说,可以更明白C#窗体是如何生成的,事件是怎么响应的..........vs2010"自动打造"会生成三个*.CS,我这是根据它生成的改编的。
      

  2.   

    效果一样,只是更了解windows窗体编程的一些底层的东西.
      

  3.   

    意义就是对初学的我来说,可以更明白C#窗体是如何生成的,事件是怎么响应的..........vs2010"自动打造"会生成三个*.CS,我这是根据它生成的改编的。你没有明白我说的话。你的代码保留了VS代码生成器的那种拖沓、冗繁。事实上,纯手工打造你可以写得更短小一些。
      

  4.   

    本帖最后由 caozhy 于 2013-08-11 10:37:11 编辑
      

  5.   


        using System;
        using System.Windows.Forms;    class MainForm : Form
        {
            Button btn;
            public MainForm()
            {
                this.Controls.Add(btn = new Button()
                {
                    Text = "ClickMe"
                });            btn.Click += delegate(object obj, EventArgs e)
                {
                    MessageBox.Show("Msg");
                };
            }
        }    static class Class2
        {
            static void Main()
            {
                Application.Run(new MainForm());
            }
        }
      

  6.   

    按照楼主原来的去改,还是可以简化成这样的    using System;
        using System.Windows.Forms;
        using System.Drawing;    class MainForm : Form
        {
            public MainForm()
            {
                Control[] Controls = null;            this.Controls.AddRange(Controls = new Control[]
                {
                    new TextBox()
                    {
                        Location = new Point(24,48),
                        Name = "txtBox1",
                        Size = new Size(224,21),
                        TabIndex = 0,
                        Text="按住鼠标右键在窗体上移动"
                    },
                    new Label()
                    {
                        Location = new Point(24,24),
                        Name= "lbl1",
                        Size =new Size(168,16),
                        TabIndex = 1,
                        Text = "鼠标的当前应用程序屏幕坐标"
                    }
                });            this.MouseDown += delegate(object obj, MouseEventArgs e)
                {
                    if (e.Button == MouseButtons.Right)
                        Controls[0].Text = "横坐标(X):" + e.X + "   纵坐标(Y):" + e.Y;
                };            this.MouseMove += delegate(object obj, MouseEventArgs e)
                {
                    if (e.Button == MouseButtons.Right)
                        Controls[0].Text = "横坐标(X):" + e.X + "   纵坐标(Y):" + e.Y;
                };            this.MouseUp += delegate(object obj, MouseEventArgs e)
                {
                    if (e.Button == MouseButtons.Right)
                        Controls[0].Text = "";
                };
            }
        }    static class Class2
        {
            static void Main()
            {
                Application.Run(new MainForm() 
                {
                    Name= "MainForm",
                    Text = "纯手工打造C#窗体程序"
                });
            }
        }
      

  7.   

    一名学生或者没有经历过商业开发的初学者能想到这样写代码很不容易了,对于7楼,8楼的代码,我想说的是
    那个form只是一个画布而已,不要让你的form1继承form
      

  8.   

    这个...LZ你还是用的C#的控件类,真要手工你就在底层一点 
      

  9.   

    c++可以用createwindow来创建窗体,c#也可以吧?
      

  10.   

    既然手写还能再省点,干脆不要继承Form了嘛,直接new Form()后加控件
      

  11.   

    晕了,这都是用微软事先定义好提供的类来实现的也敢叫纯手工?真正的纯手工应该是窗体控件、文本框控件和按钮控件的类都要自己定义,而且不能继承微软提供的基类,全部自己实现,这才叫纯手工。而且比较难的方面在于控件画面的绘制和调用win32api实现事件驱动这些啊……
      

  12.   


    关闭后双击form1.cs打开,VS会“聪明”地为你自动打开设计器。