【发布时间】:2017-08-20 10:00:43
【问题描述】:
我有一个创建控件的类:
Overrides Sub createControls()
_GlobalCounter = 0
Dim lblName As New Label
lblName.Text = "Store Name"
Dim txtName As New MaskedTextBox
txtName.Mask = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
txtName.Text = name
addControl(lblName, txtName)
' txtName.SelectionStart = txtName.Text.Length()
' txtName.SelectionLength = 0
' txtName.SelectionStart = 0
' txtName.SelectionLength = 0
addEntityControls()
End Sub
我有一个动态表单,它使用以下方法调用这些控件:
Public Function returnEditorControls() As Control()
createControls()
Return _Controls
End Function
在表单本身中:
Public Sub loadEditor()
Dim controlCount As Integer = 0
createControls()
tlpMain.Controls.Clear()
tlpMain.ColumnStyles.Clear()
tlpMain.RowStyles.Clear()
tlpMain.ColumnCount = _ColumnCount
Dim intControls As Integer = myControls.Length()
Dim intTotalRows As Integer = intControls / _ColumnCount
If (intControls Mod _ColumnCount) > 0 Then
intTotalRows += 1
End If
tlpMain.RowCount = intTotalRows
For row = 0 To intTotalRows - 1
tlpMain.RowStyles.Add(New RowStyle(SizeType.Percent, 100 / tlpMain.RowCount()))
For column = 0 To _ColumnCount - 1
If controlCount < intControls Then
tlpMain.Controls.Add(myControls(controlCount), column, row)
controlCount += 1
End If
Next
Next
End Sub
我的问题是动态创建的控件不会将光标放在 MaskedTextBox 的开头。我尝试了注释掉的方式,但它们没有用。或者,如果文本框已满,我希望光标位于文本末尾。我不能让光标做任何事情,只能停留在被点击的地方。
【问题讨论】:
-
看看这个link
-
txtName.Select(txtName.TextLength, 0)可能是您所追求的。 -
@Bugs:差不多。这将插入符号放在最后,但他想要它在开头。 :)
-
@VisualVincent 我是这么想的,但这一点让我着迷。 如果文本框已满,我希望光标位于文本的末尾 所以我想我会评论一下,OP 可以适应 :)
-
@Bugs 我尝试了这行代码,但与单击的位置相比,它并没有改变光标的位置,不管有没有文本。
标签: vb.net dynamic controls maskedtextbox