各位大侠,WinForm的窗体怎么才能根据自己的爱好自定义他的样式呀?

解决方案 »

  1.   

    是Form换肤还是里面的控件换肤?
      

  2.   

    实现异形窗体
    http://www.farproc.com/Article/ShowArticle.asp?ArticleID=191
      

  3.   

    创建一个具有不规则形状的位图文件1.用任何画图程序就可以创建不规则形状的位图,你可以使用最容易也是最方便的画图程序。2.用一种颜色画出一个不规则的区域作为程序的窗体,并用另一种颜色画出该位图的背景。(你要使该不规则区域足够大。)3.保存位图文件。下面就是一个例子:在VS.net中创建一个新的工程首先,设置窗体的背景从而建立窗体形状。1.在窗体设计器中选中窗体使之获得焦点。2.在属性对话框中进行如下设置:● 将FormBorderStyle属性设置为None。该属性去掉了程序的标题栏,同时也除去了标题栏的功能,不过我在后面还会向大家介绍如何添加代码以恢复这些功能的。● 将BackgroundImage属性设置为你创建的位图文件。你不必在工程中添加该文件,因为你一旦指定了该文件,它就会自动被添加到工程中。● 将TransparencyKey属性设置为位图文件的背景颜色值(在本例中是蓝色)。该属性使得位图的背景即上图中的蓝色部分不可见,从而窗体就呈现出一个不规则的椭圆形。3. 保存工程。按Ctrl+F5可以运行此程序。(注:因为没有标题栏,所以你可以通过Alt+F4来关闭程序)将FormBorderStyle属性设置为None后,程序的标题栏就被去掉了。这样,为了获得原来标题栏的功能,我们必须手动添加代码。下面我就向大家介绍如何添加代码实现关闭功能以及移动窗体的功能。实现窗体的关闭及移动1.往窗体上拖放一个按钮控件。2.在属性对话框中,将该控件的Text属性设置为“关闭”。3.双击按钮添加一个Click事件处理函数。4.在代码编辑器中添加如下代码:private void button1_Click(object sender, System.EventArgs e){this.Close();} 
    5. 接下来就是实现窗体的移动功能。添加以下代码来创建一个Point对象,该对象(作为一个变量)决定在什么情况下移动窗体。private Point mouse_offset; 
    6. 创建窗体的MouseDown事件的事件处理函数。为该事件添加代码后,用户就可以在任何位置移动窗体了。代码如下:private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e){mouse_offset = new Point(-e.X, -e.Y);} 
    7. 创建窗体的MouseMove事件的事件处理函数。当鼠标左键被按下,同时鼠标被移动时,窗体的Location属性就被设置为新的位置了,这样窗体就被用户拖动了。private void Form1_MouseMove(object sender,System.Windows.Forms.MouseEventArgs e){if (e.Button == MouseButtons.Left){Point mousePos = Control.MousePosition;mousePos.Offset(mouse_offset.X, mouse_offset.Y);Location = mousePos;}} 
      

  4.   

    ●创建一个GraphicsPath类的实例对象。 ●指定好该对象的各项细节(如大小、形状等等)。 ●将控件的Region属性设置为上面建立的GraphicsPath类的实例对象。 创建一个像文本的按钮控件: 1.拖放一个按钮控件到窗体上。 2.在属性对话框中进行如下设置: ●将Name属性设置为CustomButton。 ●将BackColor属性设置为一个和窗体背景颜色不同的颜色值。 ●将其Text属性设置为空字符串。 3.添加窗体的Paint事件的事件处理函数。 4.添加以下代码,用GraphicsPath类的实例对象来画控件。下面的代码以一串字符串的形式画该按钮控件,同时,程序还设置了字符串的字体、大小、风格等属性。字符串被赋给GraphicsPath类的实例对象。然后,该实例对象就被设置为按钮控件的Region属性。这样一个自定义形状的控件就完成了。 
    private void CustomButton_Paint(object sender,System.Windows.Forms.PaintEventArgs e){//初始化一个GraphicsPath类的对象System.Drawing.Drawing2D.GraphicsPath myGraphicsPath  = newSystem.Drawing.Drawing2D.GraphicsPath();//确定一个字符串,该字符串就是控件的形状string stringText = "Click Me!";//确定字符串的字体FontFamily family = new FontFamily("Arial");//确定字符串的风格int fontStyle = (int)FontStyle.Bold;//确定字符串的高度int emSize = 35;//确定字符串的起始位置,它是从控件开始计算而非窗体PointF origin = new PointF(0, 0);//一个StringFormat对象来确定字符串的字间距以及对齐方式StringFormat format = new StringFormat(StringFormat.GenericDefault);//用AddString方法创建字符串myGraphicsPath.AddString(stringText, family, fontStyle, emSize, origin, format);//将控件的Region属性设置为上面创建的GraphicsPath对象CustomButton.Region = new Region(myGraphicsPath);} 
    5. 创建按钮的Click事件的事件处理函数。添加该处理函数来改变控件的背景颜色,从而证实控件原来的那些功能没有被削减。 private void CustomButton_Click(object sender, System.EventArgs e){CustomButton.BackColor = Color.BlanchedAlmond;} 
    6.保存工程并运行。 
    进一步优化效果
    以上我们运用了GraphicsPath类的实例对象来创建了自定义形状的一个按钮控件。不过我们用的是文本字符串形式的一个形状,是否可以用三角形或是圆形等形状呢?答案是肯定的。.Net Framework能为我们提供一些预先定义好了的形状以供我们在程序中使用。通过运用这些,你可以创造出几乎任意形状的控件,你还可以把它们结合起来使用以发挥更大的功能。 下面的实例就运用了四个椭圆,当它们被运用到控件上后,看起来就像人的眼睛,很有意思吧。 private void button1_Paint(object sender,System.Windows.Forms.PaintEventArgs e){System.Drawing.Drawing2D.GraphicsPath myGraphicsPath  = newSystem.Drawing.Drawing2D.GraphicsPath();myGraphicsPath.AddEllipse(new Rectangle(0, 0, 125, 125));myGraphicsPath.AddEllipse(new Rectangle(75, 75, 20, 20));myGraphicsPath.AddEllipse(new Rectangle(120, 0, 125, 125));myGraphicsPath.AddEllipse(new Rectangle(145, 75, 20, 20));//改变按钮的背景颜色使之能被容易辨认button1.BackColor = Color.Chartreuse;button1.Size = new System.Drawing.Size(256, 256);button1.Region = new Region(myGraphicsPath);} 
    最后,你还得搞清楚窗体类是从System.Windows.Forms.Control类继承而来的。也就是说,由窗体设计器提供给你的窗体最终还是一个控件。
      

  5.   

    最简单的就是启用XP风格了。参见
    http://blog.csdn.net/tjvictor/archive/2006/12/06/1431784.aspx