纯手工打造C#窗体程序,CSC编译后只有6KB 本帖最后由 zhksoft 于 2013-08-10 23:48:52 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 意义就是对初学的我来说,可以更明白C#窗体是如何生成的,事件是怎么响应的..........vs2010"自动打造"会生成三个*.CS,我这是根据它生成的改编的。 效果一样,只是更了解windows窗体编程的一些底层的东西. 意义就是对初学的我来说,可以更明白C#窗体是如何生成的,事件是怎么响应的..........vs2010"自动打造"会生成三个*.CS,我这是根据它生成的改编的。你没有明白我说的话。你的代码保留了VS代码生成器的那种拖沓、冗繁。事实上,纯手工打造你可以写得更短小一些。 本帖最后由 caozhy 于 2013-08-11 10:37:11 编辑 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()); } } 按照楼主原来的去改,还是可以简化成这样的 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楼,8楼的代码,我想说的是那个form只是一个画布而已,不要让你的form1继承form 这个...LZ你还是用的C#的控件类,真要手工你就在底层一点 c++可以用createwindow来创建窗体,c#也可以吧? 既然手写还能再省点,干脆不要继承Form了嘛,直接new Form()后加控件 晕了,这都是用微软事先定义好提供的类来实现的也敢叫纯手工?真正的纯手工应该是窗体控件、文本框控件和按钮控件的类都要自己定义,而且不能继承微软提供的基类,全部自己实现,这才叫纯手工。而且比较难的方面在于控件画面的绘制和调用win32api实现事件驱动这些啊…… 关闭后双击form1.cs打开,VS会“聪明”地为你自动打开设计器。 初学者,三层架构的简单问题 请大家帮忙解答 WinForm程序更新 微软计算器不管多大数,都能相乘,并显示,怎么做的? 一个简单的问题!谢谢了 c#怎样在本窗体内显示其他窗体 Session的生命周期,为什么关闭浏览器Session还在? 大家帮看下这个代码的是什么意思? [斑竹&高手] C#调用excel.dll创建对象 报 "拒绝访问" 的异常 自定义winform的界面 帅哥们好,如何将"1980-12-6"这样的字符串转化为DateTime 对象? C#里面如何使用多线程? C#调用Delphi的DLL问题
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());
}
}
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#窗体程序"
});
}
}
那个form只是一个画布而已,不要让你的form1继承form
关闭后双击form1.cs打开,VS会“聪明”地为你自动打开设计器。