文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

VB如何开发定制控件

2023-06-17 21:13

关注

这篇文章主要介绍了VB如何开发定制控件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

我们的定制类是通过继承UserControl类而生成的,由于UserControl也是由继承Control类而生成的,我们的定制类将会继承 Control类的所有有用的方法、属性和事件。例如,由于是继承Control类生成的,我们的定制类会自动地拥有事件处理程序。

在VB开发定制控件时特别重要的一个问题是如何显示定制控件的用户界面。无论如何组织定制控件,需要注意的是,定制控件有时会重新显示。因此,当定制控件重绘时,必须重新绘制用户界面。考虑到控件每次重绘时,都会调用Control类的OnPaint方法,使用新的绘制定制控件用户界面的OnPaint方法覆盖该方法就能保证定制控件的保持一定的外观。

表1中的代码是一个名称为RoundButton的控件,在图1中,表单上有一个RoundButton定制控件,表2是其代码。我们需要作的工作基本上就是覆盖OnPaint方法。系统向该方法传递一个PaintEventArgs对象,从该方法中我们可以获得控件的 System.Drawing.Graphics对象,然后使用它的方法绘制定制控件的用户界面。

表1:RoundButton控件

Imports System.Windows.Forms  Imports System.Drawing   Public Class RoundButton : Inherits UserControl   Public BackgroundColor As ColorColor = Color.Blue  Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)   Dim graphics As Graphics = e.Graphics  Dim penWidth As Integer = 4 Dim pen As Pen = New Pen(Color.Black, 4)   Dim fontHeight As Integer = 10 Dim font As Font = New Font("Arial", fontHeight)   Dim brush As SolidBrush = New SolidBrush(BackgroundColor)  graphics.FillEllipse(brush, 0, 0, Width, Height)  Dim textBrush As SolidBrush = New SolidBrush(Color.Black)   graphics.DrawEllipse(pen, CInt(penWidth / 2), _  CInt(penWidth / 2), Width - penWidth, Height - penWidth)   graphics.DrawString(Text, font, textBrush, penWidth, _  Height / 2 - fontHeight)  End Sub  End Class

表1中的代码非常地简单,简直令人不能相信。我们的定制类只有一个方法:OnPaint。简单地说,该方法传递一个PaintEventArgs对象,从中我们可以获得System.Drawing.Graphics对象。这一Graphics对象表示我们的定制控件的绘制区,无论在该Graphics对象上绘制什么东西,它都会显示为定制用户控件的界面。

表2:RoundButton控件的调用

Public Class MyForm  Inherits System.Windows.Forms.Form   #Region " Windows Form Designer generated code "   Private WithEvents roundButton As RoundButton  Public Sub New()  MyBase.New()   '这个调用是Windows Form Designer所要求的  InitializeComponent()   '在InitializeComponent()调用后,可以添加任意的实例化代码   End Sub   '表单覆盖,整理组件列表  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)  If disposing Then  If Not (components Is Nothing) Then  components.Dispose()  End If  End If  MyBase.Dispose(disposing)  End Sub   'Windows Form Designer所要求的  Private components As System.ComponentModel.IContainer   '注意:下面的过程是Windows Form Designer所要求的,  '可以使用Windows Form Designer对它进行修改,  '但不要使用软件编辑程序进行修改  Private Sub InitializeComponent()  '  'MyForm  '  Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)  Me.ClientSize = New System.Drawing.Size(292, 273)  Me.Name = "MyForm" Me.Text = "Using Custom Control"  roundButton = New RoundButton()  AddHandler roundButton.Click, AddressOf roundButton_Click  roundButton.Text = "Click Here!" roundButton.BackgroundColor = System.Drawing.Color.White  roundButton.Size = New System.Drawing.Size(80, 80)  roundButton.Location = New System.Drawing.Point(100, 30)  Me.Controls.Add(roundButton)   End Sub   #End Region   Private Sub roundButton_Click(ByVal source As Object, ByVal e As EventArgs)  MessageBox.Show("Thank you.")  End Sub  Public Shared Sub Main()  Dim form As MyForm = New MyForm()  Application.Run(form)  End Sub   End Class

感谢你能够认真阅读完这篇文章,希望小编分享的“VB如何开发定制控件”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯