浅析C# WinForm控件开发前期准备

Winform在Graphics中 DrawString绘制文字自动换行 winform遇到重写控件时 会绘制文字,如何做到文字按照指定的宽度自动换行。思路是根据文字的长度与指定长度做比较,超出则截断,换行行开始绘制。参数可按实际情况调整。 阅读详情

于C# WinForm控件开发,MSDN上提供了很多使用的方法,那么这里就向你介绍对于C# WinForm控件开发的基本了解内容,C#开发WinForm控件的类型以及各自的特点。

C# WinForm控件开发的伊始:

其实C#开发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。

C# WinForm控件开发之控件(可视化的)的基本特征:

1. 可视化。

2. 可以与用户进行交互,比如通过键盘和鼠标。

3. 暴露出一组属性和方法供开发人员使用。

4. 暴露出一组事件供开发人员使用。

5. 控件属性的可持久化。

6. 可发布和可重用。

这些特征是我自己总结出来,不一定准确,或者还有遗漏,但是基本上概括了控件的主要方面。

接下来我们做一个简单的控件来增强一下感性认识。首先启动VS2005创建一个ClassLibrary工程,命名为CustomControlSample,VS会自动为我们创建一个solution与这个工程同名,然后删掉自动生成的Class1.cs文件,最后在Solution explorer里右键点击CustomControlSample工程选择Add->Classes…添加一个新类,将文件的名称命名为FirstControl。下边是代码:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Windows.Forms;  
  5. using System.ComponentModel;  
  6. using System.Drawing;  
  7.  
  8. namespace CustomControlSample  
  9. {  
  10. public class FirstControl : Control  
  11. {  
  12.  
  13. public FirstControl()  
  14. {  
  15.  
  16. }  
  17.  
  18. // ContentAlignment is an enumeration defined in the System.Drawing  
  19. // namespace that specifies the alignment of content on a drawing   
  20. // surface.  
  21. private ContentAlignment alignmentValue = ContentAlignment.MiddleLeft;  
  22.  
  23. [  
  24. Category("Alignment"),  
  25. Description("Specifies the alignment of text.")  
  26. ]  
  27. public ContentAlignment TextAlignment  
  28. {  
  29.  
  30. get 
  31. {  
  32. return alignmentValue;  
  33. }  
  34. set 
  35. {  
  36. alignmentValue = value;  
  37.  
  38. // The Invalidate method invokes the OnPaint method described   
  39. // in step 3.  
  40. Invalidate();  
  41. }  
  42. }  
  43.  
  44.  
  45. protected override void OnPaint(PaintEventArgs e)  
  46. {  
  47. base.OnPaint(e);  
  48. StringFormat style = new StringFormat();  
  49. style.Alignment = StringAlignment.Near;  
  50. switch (alignmentValue)  
  51. {  
  52. case ContentAlignment.MiddleLeft:  
  53. style.Alignment = StringAlignment.Near;  
  54. break;  
  55. case ContentAlignment.MiddleRight:  
  56. style.Alignment = StringAlignment.Far;  
  57. break;  
  58. case ContentAlignment.MiddleCenter:  
  59. style.Alignment = StringAlignment.Center;  
  60. break;  
  61. }  
  62.  
  63. // Call the DrawString method of the System.Drawing class to write   
  64. // text. Text and ClientRectangle are properties inherited from  
  65. // Control.  
  66. e.Graphics.DrawString(  
  67. Text,  
  68. Font,  
  69. new SolidBrush(ForeColor),  
  70. ClientRectangle, style);  
  71.  
  72. }  
  73. }  
  74. }  

C# WinForm控件开发的基本前期需要了解的内容就向你介绍到这里,希望对你进行C# WinForm控件开发有所帮助

C# winform 开发总结 -- 【持续更新】 此文章将记录我在C# Winform 开发过程中遇到的问题及相关知识技术点 ,方便自己以后查阅.....博客列表:https://blog.youkuaiyun.com/column/details/winfrom-aps-net.htmlC# 在多线程中如何调用Winform问题的产生:   我的WinForm程序中有一个用于更新主窗口的工作线程(worker thread),但文档中却提示我不能在多线程... 阅读详情

相关推荐

C# --- WinForm基本知识与绘图(上)

比如我们在窗口中添加了一个按钮控件,然后我们双击这个按钮,这个时候就会自动跳转到窗口名.cs文件中,并在文件中生成一个方法,这个方法会在我们设置的按钮被点击后自动执行 --- 这种方法也被我们称为事件(Event),此处为点击事件。这个窗体文件中的resx文件就是资源文件 --- res -- resource --- 我们可以把各种资源导入到这个文件中,把资源导入到这个文件中后,我们就能在实际的可视化窗体中引用这些资源了。...

qq_51947882的博客 4882

C#DrawString

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namesp

u012332009的专栏 6693

winform自定义控件(gdi+)(11)——绘制文本(DrawString)

fffff

qq_34059233的博客 1730

绘图(C# winform)

缩放:横向”(两个)、“,纵向”(四个)、“平移:横向”(两个)。添加十个NumericUpDown 分别命名为ngRotate (全局旋转角度)、nlRotate (椭圆旋转角度)、ngxScale (横向全局缩放)、 ngyScale (纵向全局缩放)、ngxMove (全局横向平移)、ngyMove (全局纵向平移)、nlxScale (横向椭圆缩放)、nlyScale (纵向椭圆缩放)、nlxMove (椭圆横向平移)、nlyMove (椭圆纵向平移)。

qq_52866412的博客 1646

C# WinForm自定义控件开发深度讲解系列

在软件开发的世界里,控件(控件)是构成用户界面的基本构件。它们可以分为两大类:原生控件和自定义控件。原生控件是开发环境所提供的现成控件,如按钮、文本框等,它们具有固有的功能和行为。而自定义控件是开发者根据特定需求创造的,旨在提供更强大的功能和更好的用户体验。尽管原生控件方便易用,但有时候它们并不能完全满足特定应用的复杂需求。这时,开发人员会转向创建自定义控件。自定义控件可以根据项目需求设计,提供更多的灵活性和扩展性。它们可以增加新的功能,改进用户交互,或者对现有控件进行优化以提高性能。

weixin_42298778的博客 719

C# DrawString方法绘制文字

C#使用自身的DrawString方法绘制文字,源码简单,示例演示了绘制过程,具体实现思路请参阅源码文件,运行示例程序后,点击“绘制文字”按钮,即可看到由DrawString方法生成的一行文字。运行效果截图:http://www.codefans.net/upload/softimg/13/22046.gif,复制到地址栏可看到。

Winform界面开发教程 - 如何对应用程序界面的组织布局

在设计界面的时候,不管是在Web端,还是在WinForm端,或者是WPF或者移动界面等应用上,我们对界面的组织布局,一直是比较有趣的话题,而组织界面的好坏从用户的感受来看,可以提供程序可使用性高低,也体现了开发者的开发界面的功力。良好的界面布局,可以使得我们组织内容更加合理,也更加美观。本篇随笔主要罗列我自己在开发Winform界面的时候,对界面的组织布局的一些小小案例和心得。 界面的组织布局,我这里分为了三个部分,一个是主界面组织布局、列表界面组织布局、新增编辑界面组织布局。 点击获取WinForm界

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 2295

从交换机安全配置,看常见局域网攻击

前言 构建零信任网络,自然离不开网络准入(NAC),这就涉及到交换机的一些安全测试,于是有了此文《从交换机安全配置看常见局域网攻击》。 交换机安全配置 如本文标题所说从交换机安全配置看常见的局域网攻击,那么下面提到的各种攻击方式,自然是建立在交换机安全配置之上来说的。我们通过h3c官方提供的《H3C 交换机安全加固手册》和《安全配置指导》,从这两份手册可以看出交换机支持的安全配置非常多,基本已经覆盖了各种我们熟知局域网攻击。下面就挑几个典型的攻击方式进行演示。 arp欺骗 【一>所有资源获取&lt

kali_Ma的博客 1万+

Winform控件编程

WinForm控件通常有三种类型:复合控件(Composite Controls),扩展控件(Extended Controls),自定义控件(Custom Controls)。         复合控件:将现有的各种控件组合起来,形成一个新的控件,将控件的功能集中起来。       扩展控件:在现有控件的控件的基础上派生出一个新的控件,为原有控件增加新的功能或者修改原有控件的功能。  

dasongxueming的专栏 666

深度学习、图像分类入门,从VGG16卷积神经网络开始

刚开始接触深度学习、卷积神经网络的时候非常懵逼,不知道从何入手,我觉得应该有一个进阶的过程,也就是说,理应有一些基本概念作为奠基石,让你有底气去完全理解一个庞大的卷积神经网络: 本文思路: 一、我认为学习卷积神经网络必须知道的几个概念: 1、卷积过程:   我们经常说卷积神经网络卷积神经网络,到底什么才是卷积?网络层卷积过程到底怎么实现?我们在这里借鉴了另一位博客大牛的动态图来给大

Errors_In_Life的博客 16万+

【项目立项管理、项目整合管理】30天通过软考高项-第二天

①项目或阶段的概述;②范围目标、范围的评估标准,证明达到完⼯标准的证据;③质量目标、项目和产品质量的评估标准、相关核实信息和实际里程碑交付日期以及偏差原因;④成本目标,包括可接受的成本区间、实际成本,产⽣任何偏差的原因等;⑤最终产品、服务或成果的确认信息的总结;⑥进度计划目标,包括成果是否实现项目预期效益:如果在项目结束时未能实现效益,则指出效益实现程度并预计未来实现情况;

weixin_42520723的博客 1000

WinForm界面开发教程——图文并茂的界面设计

DevExpress WinForm v20.2完整版下载 DevExpress技术交流群3:700924826欢迎一起进群讨论 DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任! 在Winform里面,很多控件元素都是标准的,如图标、按钮、工具栏等等,所以一...

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 7925

微信小程序导航栏滑动一定距离后固定到顶部

接上一篇文章的内容,通常在一个页面中部会有一个导航栏查看不同的内容,这篇文章旨在实现在页面下滑的过程中导航栏自动固定到顶部以便我们阅读过程中的切换。 下滑一段距离后自动固定到顶部 首先,思考这个功能应该是怎么实现的: 在页面下滑的过程中,我们希望系统应当能识别下滑了多少距离,当原本的导航栏逐渐被遮住以后(遮住意味着下滑了特定距离),触发这个功能,执行另一种样式,将导航栏固定在页面顶端,同时如果我们将页面往上滑,系统能识别到原来的导航栏能露出来了(即距离顶端的高度小于一个特定的值),这时候又执行最初的样式

Oblivision_Geek的博客 4031

C#的DrawString

private void splitContainer2_Panel1_Paint(object sender, PaintEventArgs e)         {             Graphics g = e.Graphics;             g.DrawString("Network", new Font("Verdana", 12), new SolidBrush

wjb801的博客 1万+

【2024年华为秋招-12月25日-第三题(300分)- PCB印刷电路板布线】(题目+思路+Java&C++&Python解析+在线测试)

在PCB印刷电路板设计中,器件之间的连线需要避免线路的阻抗值增大、而且赛件之间还有别的器件和别的干扰源,在布线时我们希望受到的干扰尽量小。现将电路板简化成一个M×N的矩阵,每个位置(单元格)的值表示其源干扰度。如果单元格的值为0,表示此位置没有干扰源;如果单元格的值为非0,则表示此位置是干扰源,其值为源干扰度。连线经过干扰源或干扰源附近会增加连线的总干扰度。位置Axy的干扰源的源干扰度为dd01、若连线经过位置Axy,则其总干扰度会增加d;2、若连线经过离位置A。

m0_73659489的博客 344

dolphinscheduler-3.4.0

dolphinscheduler集群部署

docsz的博客 660

Winform中的自定义组件开发(附带一些Windows GDI编程)

在实际开发中,我们会经常遇到系统给定的控件无法满足我们的需求,或者是重复机械去拖同样的控件,这样就很难控制它的位置或者样式,所以我们需要为自己定制一个合适项目的组件!我个人在使用的过程中,使用的习惯是,如果是自己的项目就会直接在项目里建立一个...

王昱潇的博客 8031

FPGA电路设计2——芯片原理图绘制

FPGA板卡设计要点:1. 引脚分配遵循电平标准分组原则,需通过预编译验证;2. 电源设计需满足上电时序要求并合理估算功耗;3. 最小系统包含配置Bank(Bank0)、通用I/O Bank(HRBank)、高性能Bank(HPBank)和高速收发器Bank(MGT/GTX)。其中Bank0负责关键配置功能,包括模式选择(支持SPI/BPI/JTAG等5种配置方式)、JTAG调试接口和系统监控引脚,其电压选择(CFGBVS_0)必须与VCCO_0电压匹配。

在读研究生,FPGA电路设计与功能开发。 1237

c# winfrom GDI+ DrawString怎么画不同颜色的字

protectedoverridevoidOnPaint(PaintEventArgse) { varg=e.Graphics; vars="床前明月光"; for(vari=0;i<s.Length;i++) ...

cxu123321的博客 2201

详细解读经典跨模态对齐技术Q-Former代码

介绍BLIP2的博客层出不穷,介绍Q-Former的博客也不少,但是详细解读Q-Former代码的博客很少。这篇博客希望以代码为基础,讲明白Q-Former的原理和核心思想,并详细解读一些值得注意的细节。希望读者们能从这一经典技术中朝花夕拾,得到启发。

沉迷单车的追风少年 2459

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C# winform 自定义控件开发

一些图片不能显示,有个word文档大家可以去下载:点击下载Word文档一般而言,Visual Studio 2005中自带的几十种控件已经足够我们使用了,但是,在一些特殊的需求中,可能需要一些特殊的控件来与用户进行交互,这时,就需要我们自己开发新的、满足用户需求的控件。 要开发自己的控件,有几种方法: 复合控件(Composite Controls):将现有的各种控件组合起来,形成一个新的控件,

wuwuFQ的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

使用lxml操作 Word 的 OpenXML 底层

本文综合介绍了使用lxml操作Word底层OpenXML文档的基础知识,并给出了一个效率远超VBA的提取Word文档中的表格的HTML表结构的实例,演示了用lxml获取及修改部分Word文档组成部件的文本、属性的方法。

yivifu的专栏 406

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: C#仿QQ皮肤----基窗体FormBase与基用户控件FormBase1的实现
下一篇: WinForm登陆窗体系列(二)
csdsuper
博客等级 码龄22年 35粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值