读书人

纯手工制作C#窗体程序,CSC编译后只有6

发布时间: 2013-08-16 14:29:57 作者: rapoo

纯手工打造C#窗体程序,CSC编译后只有6KB
本帖最后由 zhksoft 于 2013-08-10 23:48:52 编辑 程序如下:
加控件


//窗体
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Name = "MainForm";
this.AutoScaleBaseSize =new System.Drawing.Size(216,14);
this.ClientSize=new System.Drawing.Size(380,280);
this.Text="纯手工打造C#窗体程序";
this.ResumeLayout(false);

//文本框
this.textBox1=new System.Windows.Forms.TextBox();
this.SuspendLayout();
this.textBox1.Location=new System.Drawing.Point(24,48);
this.textBox1.Name="textBox1";
this.textBox1.Size=new System.Drawing.Size(224,21);
this.textBox1.TabIndex=0;
this.textBox1.Text="按住鼠标右键在窗体上移动! ";
this.Controls.Add(this.textBox1);
//label1
this.label1=new System.Windows.Forms.Label();
this.label1.Location=new System.Drawing.Point(24,24);
this.label1.Name="label1";
this.label1.Size=new System.Drawing.Size(168,16);
this.label1.TabIndex=1;
this.label1.Text="鼠标的当前应用程序屏幕坐标";
this.Controls.Add(this.label1);


定义鼠标响应事件

//定义三个鼠标事件处理程序的委托关联
this.MouseDown +=new System.Windows.Forms.MouseEventHandler (this.MainForm_MouseDown);
this.MouseUp+=new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseUp );
this.MouseMove+=new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseMove);


实现鼠标事件

//具体的委托处理程序实现
//鼠标按下
private void MainForm_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e)
{
if(e.Button==MouseButtons.Right)
textBox1.Text="横坐标(X):"+e.X+" 纵坐标(Y):"+e.Y;
}
//鼠标移动
private void MainForm_MouseMove(object sender,System.Windows.Forms.MouseEventArgs e)
{
if(e.Button== MouseButtons.Right)
textBox1.Text="横坐标(X):"+e.X+" 纵坐标(Y):"+e.Y;
}
//鼠标放开
private void MainForm_MouseUp(object sender,System.Windows.Forms.MouseEventArgs e)
{
if (e.Button==MouseButtons.Right)
textBox1.Text="";
}





完整代码可到下面的地址下载:http://download.csdn.net/detail/zhksoft/5905507


[解决办法]
纯手工制作C#窗体程序,CSC编译后只有6KB观摩一下
[解决办法]
有什么意义呢?先“自动打造”,再拷贝源代码?
[解决办法]
效果有什么不一样咧?
[解决办法]

引用:
Quote: 引用:

有什么意义呢?先“自动打造”,再拷贝源代码?

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


你没有明白我说的话。你的代码保留了VS代码生成器的那种拖沓、冗繁。

事实上,纯手工打造你可以写得更短小一些。
[解决办法]
本帖最后由 caozhy 于 2013-08-11 10:37:11 编辑 新建一个WinForms程序,删除Form1.cs,新建一个类(不是窗体),还叫Form1.cs
添加如下代码:
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
class Form1 : Form
{
public Form1()
{
Button btn = new Button();
btn.Text = "Click me!";
btn.Click += new EventHandler((o, e) => MessageBox.Show("Hello WinForms!"));
Controls.Add(btn);
}
}
}


搞定。
当然了,如果你只要一个空白的窗体,只要写
class Form1 : Form { }
一行代码就可以了。
[解决办法]

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());
}
}


[解决办法]
按照楼主原来的去改,还是可以简化成这样的


},
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#窗体程序"
});
}
}


[解决办法]
引用:
Quote: 引用:

新建一个WinForms程序,删除Form1.cs,新建一个类(不是窗体),还叫Form1.cs
添加如下代码:
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
class Form1 : Form
{
public Form1()
{
Button btn = new Button();
btn.Text = "Click me!";
btn.Click += new EventHandler((o, e) => MessageBox.Show("Hello WinForms!"));
Controls.Add(btn);
}
}
}


搞定。
当然了,如果你只要一个空白的窗体,只要写
class Form1 : Form { }
一行代码就可以了。

编译后文件有多大呢?

你编译下就知道了。不同的编译器,不同的编译选项编译出来大小不同。
[解决办法]
用c#纯手工有什么意义啊,纯手工用c
[解决办法]
引用:
用c#纯手工有什么意义啊,纯手工用c

用纸和笔的才叫纯手工好吧。。。
[解决办法]
自定义控件不是更爽?
[解决办法]
一名学生或者没有经历过商业开发的初学者能想到这样写代码很不容易了,

对于7楼,8楼的代码,我想说的是
那个form只是一个画布而已,不要让你的form1继承form

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

读书人网 >C#

热点推荐