VB.Net2005中TabControl实现Disabl功能,例一
来源:互联网 发布:linux新建目录命令 编辑:程序博客网 时间:2024/04/27 14:44
Public Class TabControlEx : Inherits TabControl
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
Case &H201 ''WM_LBUTTONDOWN
Dim tp As Object = GetTabPage(New Point(m.LParam.ToInt32))
If Not tp Is Nothing AndAlso TypeOf (tp) Is TabPage Then
If tp.Enabled = False Then
Return
End If
End If
End Select
MyBase.WndProc(m)
End Sub
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
Dim obj As Object = Control.FromHandle(msg.HWnd)
If Not obj Is Nothing AndAlso TypeOf obj Is TabControlEx AndAlso obj.Focus Then
If keyData = (Keys.Tab Or Keys.Control) OrElse keyData = Keys.Right Then
Dim tp As Object = GetNextEnablePage()
If Not tp Is Nothing AndAlso TypeOf (tp) Is TabPage Then
SelectedTab = tp
Return True
End If
End If
If keyData = (Keys.Tab Or Keys.Shift Or Keys.Control) OrElse keyData = Keys.Left Then
Dim tp As Object = GetProvEnablePage()
If Not tp Is Nothing AndAlso TypeOf (tp) Is TabPage Then
SelectedTab = tp
Return True
End If
End If
If keyData = Keys.Up OrElse keyData = Keys.Down Then
Dim tp As Object = GetLastEnablePage()
If Not tp Is Nothing AndAlso TypeOf (tp) Is TabPage Then
SelectedTab = tp
Return True
End If
End If
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)
MyBase.OnDrawItem(e)
Dim pg As TabPage = TabPages(e.Index)
Dim sf As New StringFormat
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Center
Dim fnt As New Font(pg.Font, FontStyle.Bold)
Dim sb As New SolidBrush(Color.Gray)
If SelectedIndex = e.Index Then
e.Graphics.FillRectangle(SystemBrushes.Control, e.Bounds)
'ControlPaint.DrawFocusRectangle(e.Graphics, pg.Bounds)
End If
If pg.Enabled = True Then
If SelectedIndex = e.Index Then
e.Graphics.DrawString(pg.Text, fnt, SystemBrushes.ControlText, RectangleF.op_Implicit(e.Bounds), sf)
Else
e.Graphics.DrawString(pg.Text, pg.Font, SystemBrushes.ControlText, RectangleF.op_Implicit(e.Bounds), sf)
End If
Else
e.Graphics.DrawString(pg.Text, pg.Font, sb, RectangleF.op_Implicit(e.Bounds), sf)
End If
sf.Dispose()
sb.Dispose()
fnt.Dispose()
End Sub
Private Function GetTabPage(ByVal pt As Point) As Object
Dim nIndex As Integer = 0
For nIndex = 0 To TabCount - 1
If GetTabRect(nIndex).Contains(pt.X, pt.Y) Then
Return TabPages(nIndex)
End If
Next
Return Nothing
End Function
End Class
- VB.Net2005中TabControl实现Disabl功能,例一
- vb.net2005中回调功能的简单实现
- Vb.net2005实现屏幕截图功能
- VB 实现VC TAbControl控件
- VB 实现VC TAbControl控件
- [VB.NET]VB.NET2005中怎样实现子窗体控制父窗体的控件属性?
- vb.net2005里 webclient实现文件下载
- [VB.NET]资源管理器如何用.net2005实现
- [VB.NET].net2005中Splitter问题求助
- VB.NET2005中如何使用my.Settings
- 'vb.net2005的导出到Excel功能函数
- VS.Net2005中使用本地化功能实现多语言的切换
- VB中Ping功能的实现
- 在VB中实现PickList功能
- 在VB中实现PickList功能
- 在VB中实现PickList功能
- 在VB中实现PickList功能
- 在VB中实现PickList功能
- 神啊!救救我吧!~~~
- 世界上最遥远的距离
- 需要多少位微软软件工程师来换一盏坏灯炮(笑话)
- 时间可否真的能冲淡一切吗?
- 学习型组织理论概述
- VB.Net2005中TabControl实现Disabl功能,例一
- Jave基础学习:jdbc小技巧
- TIJ - 070119
- HttpClient和HtmlParser配合实现自动登陆系统抽取页面信息
- 禁止IE6的图像工具栏
- 防止对 Visual Basic .NET 或 C# 代码进行反相工程
- 一个生成验证字符或数字的增强类(downmoon)(基于.net1.1)及调用示例
- Modern C++ design 第六章
- 关于窗口重绘