VB.Net TextBox 的应用问题

本人初学VisualBasic.Net,菜鸟一个。现在想求教大师有关TextBox空间的一些问题。1.如何设置打开程序后TextBox控件用键盘直接键入和用上下键自动换行... 本人初学Visual Basic.Net,菜鸟一个。现在想求教大师有关TextBox空间的一些问题。
1.如何设置打开程序后TextBox控件用键盘直接键入和用上下键自动换行(每次都要用鼠标点很麻烦···)
2.想编写TextBox的键入类型错误的提示,允许键入数字和小数点,如果键入字母或什么都不键入,再按按钮控件,就有Msgbox显示键入错误,或者直接禁用这类字母的键入,而不是悲剧的程序崩溃,求教如何编写···
展开
 我来答
tsycsy
2012-05-04 · TA获得超过276个赞
知道答主
回答量:154
采纳率:0%
帮助的人:160万
展开全部
1)使用focus
例子:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Focus()
End Sub
2)上下键换行
例子1:调用tab换行(可使用tab index 自定义顺序)
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Down Then
SendKeys.Send("{TAB}")
End If
End Sub
例子2:自定义换行
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Down Then
TextBox2.Focus()
End If
End Sub
3)只允许键入数字否则显示错误
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If IsNumeric(TextBox1.Text) <> Nothing Then
'你要执行的代码
Else
MsgBox("错误")
End If
End Sub
4)禁用输入字母
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim keyChar = e.KeyChar
If Char.IsControl(keyChar) Then
ElseIf Char.IsDigit(keyChar) OrElse keyChar = "."c Then
Dim text = Me.TextBox1.Text
Dim selectionStart = Me.TextBox1.SelectionStart
Dim selectionLength = Me.TextBox1.SelectionLength
text = text.Substring(0, selectionStart) & keyChar & text.Substring(selectionStart + selectionLength)
If Integer.TryParse(text, New Integer) AndAlso text.Length > 16 Then
e.Handled = True
ElseIf Double.TryParse(text, New Double) AndAlso text.IndexOf("."c) < text.Length - 3 Then
e.Handled = True
End If
Else
e.Handled = True
End If
End Sub
希望可以帮到你 =)
更多追问追答
追问
哇,很棒啊!包括使用tab和禁用字母输入,但是还有一些问题搞不懂:
1.使用键盘上下键在上下两个TextBox中还是无法自由切换(按住Control和↓才可以从TextBox1到TextBox2,也无法再回去)
2.禁用字母输入很强!但是不知道为什么,TextBox1只能输入两位数了,TextBox2却还好好的,对了这是我的按钮控件代码:
Dim A As Double = TextBox1.Text
Dim B As Double = TextBox2.Text
3.如果什么也不输入的话再按钮,还是会崩溃。
追答
1) 自由切换
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Down Then
Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
ElseIf e.KeyCode = Keys.Up Then
Me.SelectNextControl(Me.ActiveControl, False, True, True, True)
End If
End Sub
2) 禁用字母
Private Function TrapKey(ByVal KCode As String) As Boolean
If (KCode >= 48 And KCode Nothing Then
'你要执行的代码
Else
MsgBox("错误")
End If
End Sub
你试看这样行不行 =)
百度网友bdb9803
2012-05-04 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:1亿
展开全部
控件的焦点顺序由控件的TabIndex值控制,越小越靠前,你可以将TextBox控件的TabIndex属性设置为0,即最前,这样程序一运行,焦点就落到TextBox控件上了。
用上下键自动换行,需要你用代码控制,在TextBox控件的KeyPress事件中监视按键值,是上下键则将焦点转移。
TextBox的键入类型错误的提示,同样在TextBox控件的KeyPress事件中监视按键值,可控制用户只能按什么键
追问
嗯,非常感谢!焦点已经调好了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式