中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
在textbox里放按钮并控制输入字符不能覆盖住按钮(包括设计阶段)
作者:未知 时间:2005-05-28 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

Imports System.Text

Public Class mytextbox

    Inherits System.Windows.Forms.TextBox

Dim WithEvents btn As Button

Dim WithEvents btn As Button

    Public Sub New()

        MyBase.New()

 '该调用是 Windows 窗体设计器所必需的。

 '该调用是 Windows 窗体设计器所必需的。

        InitializeComponent()

  ' InitializeComponent() 调用之后添加任何初始化

  ' InitializeComponent() 调用之后添加任何初始化

        btn = New Button()

        btn.Size = New Size(23, 23)

        Me.Controls.Add(btn)

        btn.Dock = DockStyle.Right

        btn.BackColor = SystemColors.Control

        Me.Text = ""

    End Sub

 Public Event myclick(ByVal sender As Object, ByVal e As EventArgs)

 Public Event myclick(ByVal sender As Object, ByVal e As EventArgs)

    Private Sub btn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn.Click

        RaiseEvent myclick(Me, e)

    End Sub

 Private Sub btn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn.MouseEnter

 Private Sub btn_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn.MouseEnter

        Cursor = Cursors.Default

    End Sub

 Private Sub btn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn.MouseLeave

 Private Sub btn_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn.MouseLeave

        Cursor = Cursors.IBeam

    End Sub

 Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

 Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

        Dim KeyAsc As Integer = m.WParam.ToInt32

        Select Case m.Msg

            Case &H102

                If checklength() Then

                    If KeyAsc <> 8 Then

                        Return

                    End If

                Else

                    Me.MaxLength = 0

                End If

            Case &H302

                If checklength() Then

                    Return

                End If

        End Select

        MyBase.WndProc(m)

    End Sub

    '检查函数

    Private Function checklength(Optional ByVal str As String = "") As Boolean

        If str = "" Then

            Dim leng As Integer = CInt(Me.CreateGraphics.MeasureString(Me.Text, Me.Font).Width)

            Dim m As Integer = Me.Width

            Dim p As Integer = btn.Width

            If leng >= m - p - 5 Then

                Return True

            End If

        Else

            Dim leng As Integer = CInt(Me.CreateGraphics.MeasureString(str, Me.Font).Width)

            Dim m As Integer = Me.Width

            Dim p As Integer = btn.Width

            If leng + 1 >= m - p Then

                Return True

            End If

        End If

        Return False

    End Function

    '修改text属性时检查

    Public Overrides Property Text() As String

        Get

            Return MyBase.Text

        End Get

        Set(ByVal Value As String)

            If checklength(Value) Then

                Throw New Exception("超出可以显示的范围!")

            End If

            MyBase.Text = Value

        End Set

    End Property

 End Class

 End Class

 ‘///////////////////////////////              闵峰

 ‘///////////////////////////////              闵峰

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有