WinForm控件开发总结(一)------开篇

简介:
  我本人不是专业的控件开发人员,只是在平常的工作中,需要自己开发一些控件。在自己开发 WinForm 控件的时候,没有太多可以借鉴的资料,只能盯着 MSDN 使劲看,还好总算有些收获。现在我会把这些经验陆陆续续的总结出来,写成一系列方章,希望对看到的朋友有所帮助。今天我来开个头。
      其实开发 WinForm 控件并不是很复杂, .NET 为我们提供了丰富的底层支持。如果你有 MFC或者API图形界面 的开发经验,那么学会 WinForm 控件可能只需要很短的时间 就够了。
      自己开发的 WinForm 控件通常有三种类型:复合控件( Composite Controls ),扩展控件( Extended Controls ),自定义控件( Custom Controls )。    
      复合控件:将现有的各种控件组合起来,形成一个新的控件,将集中控件的功能集中起来。
      扩展控件:在现有控件的控件的基础上派生出一个新的控件,为原有控件增加新的功能或者修改原有控件的控能。
      自定义控件:直接从 System.Windows.Forms.Control 类派生出来。 Control 类提供控件所需要的所有基本功能,包括键盘和鼠标的事件处理。自定义控件是最灵活最强大的方法,但是对开发者的要求也比较高,你必须为 Control 类的 OnPaint 事件写代码,你也可以重写 Control 类的 WndProc 方法,处理更底层的 Windows 消息,所以你应该了解 GDI +和 Windows API 。    
      本系列文章主要介绍自定义控件的开发方法。
      控件(可视化的)的基本特征:
      1.       可视化。
      2.       可以与用户进行交互,比如通过键盘和鼠标。
      3.       暴露出一组属性和方法供开发人员使用。
      4.       暴露出一组事件供开发人员使用。
      5.       控件属性的可持久化。
      6.       可发布和可重用。
      这些特征是我自己总结出来,不一定准确,或者还有遗漏,但是基本上概括了控件的主要方面。
      接下来我们做一个简单的控件来增强一下感性认识。首先启动VS2005创建一个ClassLibrary工程,命名为CustomControlSampleVS会自动为我们创建一个solution与这个工程同名,然后删掉自动生成的Class1.cs文件,最后在Solution explorer里右键点击CustomControlSample工程选择Add->Classes…添加一个新类,将文件的名称命名为FirstControl。下边是代码:
      
using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Windows.Forms;
using  System.ComponentModel;
using  System.Drawing;

namespace  CustomControlSample
{
    
public class FirstControl : Control
    
{

        
public FirstControl()
        
{

        }


        
// ContentAlignment is an enumeration defined in the System.Drawing
        
// namespace that specifies the alignment of content on a drawing 
        
// surface.
        private ContentAlignment alignmentValue = ContentAlignment.MiddleLeft;

        [
        Category(
"Alignment"),
        Description(
"Specifies the alignment of text.")
        ]
        
public ContentAlignment TextAlignment
        
{

            
get
            
{
                
return alignmentValue;
            }

            
set
            
{
                alignmentValue 
= value;

                
// The Invalidate method invokes the OnPaint method described 
                
// in step 3.
                Invalidate();
            }

        }



        
protected override void OnPaint(PaintEventArgs e)
        
{
            
base.OnPaint(e);
            StringFormat style 
= new StringFormat();
            style.Alignment 
= StringAlignment.Near;
            
switch (alignmentValue)
            
{
                
case ContentAlignment.MiddleLeft:
                    style.Alignment 
= StringAlignment.Near;
                    
break;
                
case ContentAlignment.MiddleRight:
                    style.Alignment 
= StringAlignment.Far;
                    
break;
                
case ContentAlignment.MiddleCenter:
                    style.Alignment 
= StringAlignment.Center;
                    
break;
            }


            
// Call the DrawString method of the System.Drawing class to write   
            
// text. Text and ClientRectangle are properties inherited from
            
// Control.
            e.Graphics.DrawString(
                Text,
                Font,
                
new SolidBrush(ForeColor),
                ClientRectangle, style);

        }

    }

}

   晚了,今天写到这里,下一篇文章介绍怎样使用我们写好的控件。







本文转自纶巾客博客园博客,原文链接:http://www.cnblogs.com/guanjinke/archive/2006/12/04/582084.html,如需转载请自行联系原作者
目录
相关文章
|
6月前
C#WinForm基础编程(二)
C#WinForm基础编程
158 0
|
6月前
|
C# 数据安全/隐私保护
C#WinForm基础编程(一)
C#WinForm基础编程
114 0
|
C# Windows
wpf怎么使用WindowsFormsHost(即winform控件)
原文:wpf怎么使用WindowsFormsHost(即winform控件) 使用方法:   1、首先,我们需要向项目中的引用(reference)中添加两个动态库dll,一个是.
5412 0
|
3月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
66 0
|
Java C# 索引
C#之 十九 使用WinForm控件
C#之 十九 使用WinForm控件
200 0
|
编译器 C# Windows
C# 编写 WinForm 窗体应用程序(第一期)
WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。
C# 编写 WinForm 窗体应用程序(第一期)
|
C# 数据安全/隐私保护 Windows
C#编写WinForm 窗体应用程序(第二期)
消息框在 Windows 操作系统经常用到,例如在将某个文件或文件夹移动到回收站中时系统会自动弹出如下图所示的消息框。
C#编写WinForm 窗体应用程序(第二期)
|
C# 数据安全/隐私保护
C# 编写 WinForm 窗体应用程序(第三期)
文本框 (TextBox) 是在窗体中输入信息时最常用的控件,通过设置文本框属性可以实现多行文本框、密码框等。
C# 编写 WinForm 窗体应用程序(第三期)
C#编写WinForm窗体应用程序(第五期)
列表框 (ListBox) 将所提供的内容以列表的形式显示出来,并可以选择其中的一项或多项内容,从形式上比使用复选框更好一些。
C#编写WinForm窗体应用程序(第五期)
C#编写WinForm窗体应用程序(第四期)
在 C# 语言中 RadioButton 是单选按钮控件,多个 RadioButton 控件可以为一组,这一组内的 RadioButton 控件只能有一个被选中。
C#编写WinForm窗体应用程序(第四期)