''' <summary>
''' 动态生成控件并调整控件位置;
''' </summary>
Public Sub CreateControl(ByVal TextBoxTagContent As Dictionary(Of String, Integer), ByVal TextBoxType As List(Of Boolean))
Dim keyvalue As KeyValuePair(Of String, Integer)
TextBoxIndex.Clear()
'生成LabelBox和Textbox
'文本框区分为数字和文本两种
If TextBoxType.Count = TextBoxNum Then
For i As Integer = 0 To TextBoxNum - 1
Me.Controls.Add(New Label())
Me.Controls.Add(New TextBox())
Next
For j As Integer = 1 To TextBoxType.Count
If TextBoxType.Item(j - 1) = True Then
'添加默认值
If CType(Me.Controls.Item(2 * j - 1), TextBox).Text = "" OrElse IsNumeric(CType(Me.Controls.Item(2 * j - 1), TextBox).Text) = False Then
CType(Me.Controls.Item(2 * j - 1), TextBox).Text = "1.00"
End If
'是数字文本框时时添加事件处理
AddHandler CType(Me.Controls.Item(2 * j - 1), TextBox).LostFocus, AddressOf ActiveEvent
End If
Next
End If
'设置Label的text属性,且设置textboxtag属性;
If TextBoxTagContent.Count > 0 And TextBoxTagContent.Count = TextBoxNum Then
Dim L As Integer = 0
For Each keyvalue In TextBoxTagContent
Me.Controls.Item(L).Text = keyvalue.Key
Me.Controls.Item(L).BackColor = LabelBackColor
Me.Controls.Item(L).Tag = "NoTag"
Me.Controls.Item(L).Width = LabelWidth
Me.Controls.Item(L).Height = LabelHeight
L = L + 1
Me.Controls.Item(L).Tag = keyvalue.Value
'便于根据参数编号取出文本框中的值
TextBoxIndex.Add(keyvalue.Value, L)
Me.Controls.Item(L).Width = TextBoxWidth
Me.Controls.Item(L).Height = TextBoxHeight
L = L + 1
Next
End If
'定义控件的位置
'Dim TotalWidth As Integer = me.Width
'Dim TotalHeight As Integer = me.Height
Dim current As New Point()
'控件上下左右之间的间隔固定为6;每四个控件一行,开始给控件定位
Dim Columns As Integer = 1
Dim Rows As Integer = 0
'textbox '定义第一个控件的位置
current.X = JZ_X
current.Y = JZ_Y
Me.Controls.Item(0).Location = current
For m As Integer = 1 To (TextBoxNum * 2) - 1
If Columns < PerRowTS * 2 Then
current.X = Me.Controls.Item(m - 1).Location.X + 6 + (Me.Controls.Item(m - 1).Width)
current.Y = Me.Controls.Item(m - 1).Location.Y
Me.Controls.Item(m).Location = current
Columns = Columns + 1
Else
Rows = Rows + 1
current.X = JZ_X
current.Y = JZ_Y + 6 * Rows + Me.Controls.Item(0).Height * Rows
Me.Controls.Item(m).Location = current
Columns = 1
End If
Next
'调整面板高度
ActiveGb()
'enter转换为Tab
TextBox_init()
End Sub
''' <summary>
''' 数字文本框输入不是数字时,失去焦点后变为0
''' </summary>
Public Sub ActiveEvent(ByVal sender As Object, ByVal e As System.EventArgs)
If CType(sender, TextBox).Text = "" Then
CType(sender, TextBox).Text = "1.00"
ElseIf IsNumeric(CType(sender, TextBox).Text) = False Then
CType(sender, TextBox).Text = "1.00"
ElseIf Int(CType(sender, TextBox).Text) < 0 Then
CType(sender, TextBox).Text = "1.00"
Else
'若是全角数字转化为半角数字
Dim c As Char() = Trim(CType(sender, TextBox).Text).ToCharArray()
For i As Integer = 0 To c.Length - 1
Dim b As Byte() = System.Text.Encoding.Unicode.GetBytes(c, i, 1)
If b.Length = 2 Then
If b(1) = 255 Then
b(0) = CType((b(0) + 32), Byte)
b(1) = 0
c(i) = System.Text.Encoding.Unicode.GetChars(b)(0)
End If
End If
Next
Dim returnString As String = New String(c)
CType(sender, TextBox).Text = returnString
End If
End Sub
''' <summary>
''' 文本框的Enter转为Tab
''' </summary>
''' 按钮添加事件
Private Sub TextBox_init()
Dim oneTextBox As Windows.Forms.TextBox
For i As Integer = 0 To Me.Controls.Count - 1
If Me.Controls.Item(i).GetType.Name = "TextBox" Then
oneTextBox = Me.Controls.Item(i)
RemoveHandler oneTextBox.KeyPress, AddressOf Check_PTT_btn
AddHandler oneTextBox.KeyPress, AddressOf Check_PTT_btn
RemoveHandler oneTextBox.GotFocus, AddressOf Check_PTT_Focus
AddHandler oneTextBox.GotFocus, AddressOf Check_PTT_Focus
End If
Next
End Sub
''' <summary>
''' 用tab()代替回车
''' </summary>
Public Sub Check_PTT_btn(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
'用tab()代替回车
Dim oneTextBox As System.Windows.Forms.TextBox = sender
If e.KeyChar = Chr(13) Then
If oneTextBox.Text.Trim() <> "" Then
e.Handled = True
keybd_event(9, 0, 0, 0)
Else
oneTextBox.Focus()
End If
End If
End Sub
分享到:
相关推荐
VB.NET制作自己控件(Usercontroll) 最基础vb.net 控件教程 把功能封装在控件里面
本来不想说这个问题,是因为我的另一个资料,很多朋友下载了,说是VB6里面的,在VB.NET里面无法使用Winsock。在做次资源,希望能够帮助到大家。资源中有详细说明。 对于老手,还是习惯使用axWinsock 。 1、在VB.NET...
vb.net 自定义控件 自定义属性 UITypeEditor UI 类型编辑器 实例 提供一个示例 UITypeEditor,它使用 IWindowsFormsEditorService 显示用于用户输入的 Form。 IWindowsFormsEditorService 只能通过 PropertyGrid ...
VB.NET二维码生成和打印实例
vb.net写的随机数生成 界面美观 生成后可冒泡排序 可自定义生成个数 和范围
vb.net实时曲线绘制源码。 1.生成实时数据。 2.绘制实时曲线。 3.更新实时曲线。 欢迎下载实例源码研究。
vb.net 控件数组演示。。。。。。。。。。。。。。
一个VB.NET图表控件及示例,包括柱状图的显示,本控件可根据数据生成柱状图、三维图表、适时曲线图功能,可广泛应用于数据统计、报表系统中。
使用说明:单击一次按钮生成一次数据,根据生成的数据生成曲线,曲线向左移动!
5.2版控件新增了一个Chartlet的组件,使用非常方便,可以生成柱形图、饼图、折线图等多种图形,而且可以设置2D或3D效果,既可以在打印控件中打印出来,也可以在Graphics对象中显示。 4、文本打印输出功能,控件提供...
本DataGridView打印控件和.NET打印控件5.6版(含报表模板设计组件)2014年6月22日修改完成,完全免费,在.NET2.0及以上环境下都可以使用(VB打印、C#打印都是可以的),有帮助文档与使用实例。 与上一版本的5.5版...
vb.net 2005生成二维码图片,支持各位字符,引用的是Google的第三方控件
VB.NET二维码生成和打印实例源码,可看做是DotNetBarcode.dll二维码生成控件
甘特图控件,形象且直观.Active控件
完全代码集成-使用Microsoft Visual Studio.NET编辑器用C#或VB.NET编写报表的代码,非常灵活。 报表向导-报表向导帮助您开始创建使用集成设计器来定制的简单报表。 图片文件名 运用优势 最终用户报表设计器 ...
完全开源的一个控制源代码,完成根据数据生成柱状图、三维图表、适时曲线的功能,上边是演示图,看上去还不错,控件源码在VS20...
vb.net做的三层架构的最底层
Winform控件支持所有.net程序,包括C#.NET, VB.NET, VC++.NET等 如果您第一次使用,请按照下面的5个步骤(Winfrom使用与此类似,请参看示例程序)。 第一步,到下载页面去下载Chartlet控件。 第二步,将控件加入VWD...
语言:VB.NET 平台:VB.NET 2009(版本9.0) 解决问题: 1、动态设置彩票双色球矩阵中不同类型的矩阵及矩阵元素BackColor状态和Text值。 2、如何使用用户自定义控件。 3、如何设置用户自定义控件的属性。 1)、...