vb.net动态生成控件并排版

''' <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
一.该类的作用: 该类可以帮大家自动布局界面控件,不需要开发人员每个控件的设置属性,只需要调用方法,自动会设置该控件的布局,并且控件的宽度随着窗体的变化而变化,该方法调用很简单 二.原理:使用TableLayOutPanle的功能,然后设定里面每个控件的样式 三.使用方法: 1)首先在录入数据的地方用GroupBox或者Panle作为容器(目前里面配置了这2数据信息用户可以在ParentControlHeader类进行相应配置) 2)然后在该容器加入TableLayOutPanle控件,并设定行和列(例如:设定6列,奇数列的宽度都是绝对值:例如100px ,偶数列的宽度都设定为33%) 3)大家可以把相应的控件放入到TableLayOutPanle的相应单元格子,(奇数列是标题列,偶数列是输入列) 4)在Load事件这样调用就OK了 TableFormat tf = new TableFormat(tableLayoutPanel1); //此方法可以适用于父级控件是GroupBox或者Panel,您也可一修改 ParentControlHeader类的配置文件,加入新的值,或者是修改已经设定的值 tf.SetTableFormat(true, PControlType.GroupControl); 这样,大家不需要设定每个TableLayout控件的子控件的任何属性,TableFormat类帮自动布局界面上的控件,并且随着窗体的变化,控件是自动变化的,当然里面有些参数,是可以设定父级控件(GroupPanle/Panle的高度=里面行高(自动计算)+用户配置高度(目前配置了GroupBox和Panle) 详细可见Demo,代码注释写的比较详细,大家可以参考下. 谢谢..^_^.. (鼓励0资源分上传)
### 回答1: VB.Net是一种基于.NET平台的编程语言,可以用来开发各种应用程序,包括与Microsoft Office进行交互的应用程序。VB.Net Office控件一组用于操作和控制Microsoft Office软件(如Word、Excel、PowerPoint等)的工具集合。 VB.Net Office控件提供了丰富的功能和接口,使我们能够在应用程序创建、打开、编辑和保存Office文档。它提供了简单而强大的对象模型,可以访问Office应用程序的各个组件(如文档、工作表、幻灯片等)以及它们的属性和方法。 使用VB.Net Office控件,我们可以编写代码来自动执行一系列操作,例如创建新的Word文档,将数据填充到Excel工作表,从PowerPoint幻灯片提取数据等等。我们可以通过编程方式控制Office应用程序的各个方面,如格式设置、数据导入导出、图表创建、自定义菜单等。 此外,VB.Net Office控件还提供了与Office应用程序进行交互的功能,例如打开和关闭Office应用程序、调用Office应用程序的功能和命令、处理Office应用程序的事件等。通过这些功能,我们可以根据具体需求来定制应用程序,以实现更高的自动化和扩展性。 总结来说,VB.Net Office控件是一种方便的工具,可以帮助我们在VB.Net应用程序利用Microsoft Office软件的强大功能。它提供了丰富的功能和接口,使我们能够轻松地与Office应用程序进行交互,并能够编写代码来自动化执行各种操作。 ### 回答2: VB.NET是一种面向对象的编程语言,可以通过使用Office控件来操作Microsoft Office软件。Office控件库为开发人员提供了一组功能强大的工具,使其能够在自己的应用程序嵌入和自动化Office应用程序。以下是VB.NET Office控件的一些主要功能和用途: 1.自动化Office应用程序:使用VB.NET和Office控件,可以自动化执行许多Office应用程序的操作,如创建和编辑Word文档、Excel表格和PowerPoint演示文稿。 2.读写Office文档:通过VB.NET和Office控件,可以轻松读取和修改Office文档的内容,例如从Excel表格读取数据、向Word文档添加文本、创建幻灯片等。 3.与Outlook集成:使用VB.NET和Office控件,可以通过创建和发送电子邮件、管理日历和联系人,与Outlook进行集成。 4.自定义菜单和工具栏:通过VB.NET和Office控件,可以在Office应用程序创建自定义菜单和工具栏,以实现特定的操作和功能。 5.数据分析和报告生成:使用VB.NET和Office控件,可以将数据导入到Excel进行分析和报告生成,将数据展示为图表、图形和表格。 通过VB.NET和Office控件,开发人员可以轻松地利用Microsoft Office软件的功能,实现自定义的业务需求。无论是自动化处理大量文件、与Outlook进行交互还是生成专业的报告,VB.NET和Office控件都是非常有用的开发工具。 ### 回答3: VB.NET是一种流行的编程语言,用于开发Windows平台上的应用程序。Office控件VB.NET一组特殊控件,用于与Microsoft Office套件的各种应用程序进行交互和集成。 VB.NET的Office控件包括Word控件、Excel控件和PowerPoint控件等,它们都是通过与Office应用程序的COM接口进行通信来实现功能的。 使用VB.NET的Office控件,我们可以通过编程方式创建、打开、编辑和保存Word文档、Excel电子表格和PowerPoint演示文稿。我们可以使用这些控件来实现自定义的表格、图表和图形,以及添加、修改和删除文本、图像和媒体内容。 除了处理文档内容,Office控件还提供了与文档格式和样式相关的功能。我们可以通过控件修改字体、颜色、对齐方式等文本格式,并可以应用预定义的样式和主题。 此外,Office控件还允许我们执行一些高级操作,比如使用一组预定义的功能和方法来进行邮件合并、数据筛选和排序、图表生成和编辑等。 总之,VB.NET的Office控件为我们提供了方便、快捷的方法来与Microsoft Office应用程序进行交互。无论是创建个人应用程序还是企业级解决方案,Office控件都能帮助我们实现与Office应用程序的无缝集成,从而提高工作效率和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值