文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
文本框中光标位置的获得
用VB导入导出你的IE收藏夹
VB应用程序访问SQL Server方法探讨
VB访问SQL Server数据库技术全揭密
自动上网抓数据的机器人
自己的IE——用VB制作浏览器
VB中如何保存Webbrowser中的整个页面..
在VB中该如何控制其它程序的弹出窗口..
保存webbrowser中的HTML内容
破译动网验证码的简单方法
轻松获取QQ密码
VB.NET获取硬盘序列号的方法
WEBBROWSER 技巧一(收藏)
VB自动登陆网络站点详解(二):Inet..
获取webbrowser控件网页的源码
WebBrowser控件说明
关于用VB做更漂亮的窗体的思考
VB中访问存储过程的几种办法
VB6中改变屏幕的分辨率和刷新频率
VB编写一个能显示百分比的自定义进度..
公农历转换VB类
VB.NET窗口渐淡关闭
使用VB实现邮箱自动注册(二):修改..
VB.NET轻松实现任务栏程序
VB.NET启动外部程序
利用vb实现图片上传
VB实现局域网内的文件传输
VB 一个Function传回多个值
在VB中实现多线程
VB 手机号码编码程序


技术教程 -> VB教程 ->  
VB.NET中制作图片按钮
来源:转载   人气:770   录入时间:2007-11-8
    思路:很简单,就是在一个picturebox控件上放置一个button控件,然后将这个button添加进picturebox上(确保先拖拽picturebox,后拖拽button),设置这个button的背景色(这个时候是相对于picturebox)为透明。
   
   Imports System.ComponentModel
   
   Public Class picturebutton
   
   Inherits System.Windows.Forms.UserControl
   
   #Region " Windows 窗体设计器生成的代码 "
   
   ''UserControl 重写 dispose 以清理组件列表。
   
   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 窗体设计器所必需的
   
   Private components As System.ComponentModel.IContainer
   
   ''注意:以下过程是 Windows 窗体设计器所必需的
   
   ''可以使用 Windows 窗体设计器修改此过程。
   
   ''不要使用代码编辑器修改它。
   
   Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
   
   Friend WithEvents Button1 As System.Windows.Forms.Button
   
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
   
   Me.PictureBox1 = New System.Windows.Forms.PictureBox()
   
   Me.Button1 = New System.Windows.Forms.Button()
   
   Me.SuspendLayout()
   
   ''
   ''PictureBox1
   
   ''
   
   Me.PictureBox1.Name = "PictureBox1"
   
   Me.PictureBox1.Size = New System.Drawing.Size(136, 40)
   
   Me.PictureBox1.TabIndex = 0
   
   Me.PictureBox1.TabStop = False
   ''
   ''Button1
   
   ''
   
   Me.Button1.Name = "Button1"
   
   
   
   Me.Button1.TabIndex = 1
   
   Me.Button1.Text = "Button1"
   
   ''
   
   ''picturebutton
   
   ''
   
   Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button1, Me.PictureBox1})
   
   Me.Name = "picturebutton"
   
   Me.ResumeLayout(False)
   
   
   End Sub
   
   
   #End Region
   
   Public Sub New()
   
   
   MyBase.New()
   
   ''该调用是 Windows 窗体设计器所必需的。
   
   InitializeComponent()
   
   ''在 InitializeComponent() 调用之后添加任何初始化
   
   
   Me.Button1.Width = 100 ‘设置按钮的初始大小
   
   Me.Button1.Height = 23
   
   Me.Button1.BackColor = Color.Transparent ‘背景色透明
   
   
   Me.Button1.ForeColor = Color.Black
   
   Me.PictureBox1.Controls.Add(Me.Button1)
   
   End Sub
   
   Private m_text As String ‘设置按钮标题
   
   
   
   Private a As Integer
   
   
   ''Private m_image As Image
   
   <Description("picturebox图片。")> _
   
   Public Property image() As image
   
   Get
   
   
   
   Return Me.PictureBox1.Image
   
   
   
   End Get
   
   
   
   Set(ByVal Value As image)
   
   
   
   Me.PictureBox1.Image = Value
   
   
   
   Invalidate()
   
   
   
   End Set
   
   
   
   End Property
   
   
   Shadows Property forecolor() As Color
   
   
   
   Get
   
   
   
   Return Me.Button1.ForeColor
   
   
   
   End Get
   
   
   
   Set(ByVal Value As Color)
   
   
   
   Me.Button1.ForeColor = Value
   
   
   
   Invalidate()
   
   
   
   End Set
   
   
   
   End Property
   
   
   
   Shadows Sub ResetForeColor()
   
   
   
   Me.Button1.ForeColor = SystemColors.ControlText
   
   
   
   End Sub
   
   
   
   ''////
   
   
   
   ''按钮的单击事件
   
   
   
   Event BtnClick(ByVal sender As Object, ByVal e As System.EventArgs)
   
   Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
   
   RaiseEvent BtnClick(Me, e)
   
   
   End Sub
   
   
   
   ''////
   
   ''控件改变大小时,需重绘控件,以使子控件排位美观
   
   
   
   Private Sub FileTextBox_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
   
   
   
   RedrawControls()
   
   
   
   End Sub
   
   ''子控件会自动继续容器的Font属性,所以改变容器的Font属性时也要重绘控件
   
   
   
   Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs)
   
   
   
   ''让基控件更新文本框
   
   
   
   MyBase.OnFontChanged(e)
   
   
   
   ''重绘控件
   
   
   
   RedrawControls()
   
   
   
   End Sub
   
   
   
   
   
   
   
   ''重绘控件
   
   
   
   Private Sub RedrawControls()
   
   
   
   ''控件宽度
   
   
   
   Dim width As Integer = Me.ClientRectangle.Width ''获得工作区宽
   
   
   
   ''以按钮的高度来确定控件高度
   
   
   
   Dim btnSide As Integer = Button1.Height
   
   
   
   Dim btnwidth As Integer = Button1.Width
   
   
   
   If Me.ClientRectangle.Height <> btnSide Then
   
   
   
   ''设置控件工作区的大小
   
   
   
   ''Me.SetClientSizeCore(btnwidth, btnSide)
   
   
   
   Me.SetClientSizeCore(width, btnSide) ''这里使用工作区的宽是因为:按钮和picturebox可以调整宽度
   
   
   
   ''上面的语句激发了嵌套的Resize事件,因此需要立即退出,如果不退出,就会反复调用进入死循环
   
   
   
   Exit Sub
   
   
   
   End If
   
   
   
   
   
   
   
   ''调整子控件的大小
   
   
   
   ''Txt.SetBounds(0, 0, width, btnSide)
   
   
   
   ''Btn.SetBounds(width - 19, 2, 17, btnSide - 4)
   
   Me.PictureBox1.SetBounds(0, 0, width, btnSide)
   
   
   
   Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
   
   
   
   Me.Button1.SetBounds(0, 0, width, btnSide)
   
   
   
   
   
   
   
   End Sub
   
   End Class
   
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987