在textbox里放按钮并控制输入字符不能覆盖住按钮(包括设计阶段)
来源:互联网 发布:caffe 分布式架构 编辑:程序博客网 时间:2024/05/19 03:21
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
‘/////////////////////////////// 闵峰
‘/////////////////////////////// 闵峰
- 在textbox里放按钮并控制输入字符不能覆盖住按钮(包括设计阶段)
- 放在UIImageView上 按钮不能点击
- Android 覆盖AlertDialog里的按钮事件并显示Toast
- 验证输入按钮控制
- 按钮放在static上
- VB.NET里如何在textbox里按回车后就触发command1按钮
- 如何在程序里控制按钮的不可见?
- 非法字符不能输入到TextBox
- 在App里,「确定」按钮应该放在左边还是右边?
- 在VB中如何把开始和暂停放在同一个按钮里
- 控制TextBox框的输入字符
- 在textbox中输入值后,单击回车,指定调用哪一个按钮的方法
- 在textbox中输入值后,单击回车,指定调用哪一个按钮的方法
- JSF中selectOneRadio(单选按钮)的相关问题(包括在dataTable里的循环使用)
- js控制,提交后隐藏提交按钮,并一分钟内不能再次提交
- Android emulator 的控制按钮不能使用并显示 "hardware buttons not enabled in avd"
- 在WebForm1里单击按钮弹出新页面WebForm2,在WebForm2输入数据后返回WebForm1
- js动态创建按钮并控制按钮的形式
- 备忘录
- DropDownLis实现无刷新联动菜单
- 有了解清华同方真爱T8680的请赐教
- 搬家了~~
- 获得光标在多行textbox中的行与列的函数
- 在textbox里放按钮并控制输入字符不能覆盖住按钮(包括设计阶段)
- 重写datagrid(禁止对列宽进行拖拽)
- 【收藏】宋兴烈:变革前的思索
- 《IBM-PC汇编语言程序设计 第二版》部分习题答案(第5章)
- 工作太无聊了~~~
- 给25岁以前男人的忠告(转载)
- CMOS 开机密码解密集锦
- 脱壳的各种方法
- 第一次更新