Public Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
創(chuàng)新互聯(lián)主營阿壩州網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),阿壩州h5小程序開發(fā)搭建,阿壩州網(wǎng)站營銷推廣歡迎阿壩州等地區(qū)企業(yè)咨詢
Dim SplitStr As String = ","
Dim SelectionStart As Integer = sender.SelectionStart
Dim TextLength As Integer = sender.Text.Length
'------------------------------------------------------------------
Select Case Asc(e.KeyChar)
Case Is = 8 '"回刪"
Dim str As String = sender.text
Dim Array = Split(sender.text, ",", -1)
If sender.SelectionStart = str.Length Then
If str.Contains(",") Then
Dim text = ""
For x = 0 To UBound(Array) - 1
If text = "" Then
text += Array(x)
Else
text += "," + Array(x)
End If
Next
sender.text = text
sender.SelectionStart = text.Length
e.KeyChar = Chr(0)
End If
End If
Case Asc("0") To Asc("9") '" 0 to 9 "
e.KeyChar = e.KeyChar
Case Is = 44, 45 '","
Select Case TextLength
Case Is = 0
e.KeyChar = Chr(0)
Case Else
Select Case SelectionStart
Case 0
e.KeyChar = Chr(0)
Case 1 To TextLength - 1
If Mid(sender.text, SelectionStart, 1) = SplitStr Or Mid(sender.text, SelectionStart + 1, 1) = SplitStr Then
e.KeyChar = Chr(0)
Else
e.KeyChar = e.KeyChar
End If
Case TextLength
If Mid(sender.text, SelectionStart, 1) = SplitStr Then
e.KeyChar = Chr(0)
Else
e.KeyChar = e.KeyChar
End If
End Select
End Select
Case Else
e.KeyChar = Chr(0)
End Select
End Sub
這是我的程序中復(fù)制過來的,只能輸入數(shù)據(jù)字與逗號還有下劃線,你查一下F和J的Ass嗎是多少,改寫一下就OK
最簡單的加速運(yùn)動示例,直接拷貝代碼,即可用方向鍵控制控件移動
Public?Class?最簡單的加速運(yùn)動
Dim?左右,?上下?As?Integer
Dim?X,?Y,?VX,?VY,?VA?As?Double
Dim?WithEvents?時鐘?As?New?Timer
Dim?WithEvents?移動控件?As?New?Label
Private?Sub?Form1_Load(sender?As?Object,?e?As?EventArgs)?Handles?MyBase.Load
Me.KeyPreview?=?True
VA?=?0.5
X?=?300.0
Y?=?300.0
移動控件.BackColor?=?Color.MediumPurple
移動控件.Size?=?New?Size(60,?60)
Controls.Add(移動控件)
時鐘.Interval?=?25
時鐘.Enabled?=?True
End?Sub
Private?Sub?Form1_KeyDown(sender?As?Object,?e?As?KeyEventArgs)?Handles?MyBase.KeyDown
If?e.KeyCode?=?Keys.Up?Then?上下?=?-1
If?e.KeyCode?=?Keys.Down?Then?上下?=?1
If?e.KeyCode?=?Keys.Left?Then?左右?=?-1
If?e.KeyCode?=?Keys.Right?Then?左右?=?1
End?Sub
Private?Sub?Form1_KeyUp(sender?As?Object,?e?As?KeyEventArgs)?Handles?MyBase.KeyUp
If?e.KeyCode?=?Keys.Up?Then?上下?=?0
If?e.KeyCode?=?Keys.Down?Then?上下?=?0
If?e.KeyCode?=?Keys.Left?Then?左右?=?0
If?e.KeyCode?=?Keys.Right?Then?左右?=?0
End?Sub
Private?Sub?時鐘_Tick(sender?As?Object,?e?As?EventArgs)?Handles?時鐘.Tick
VX?=?Math.Min(VX?+?左右?*?VA,?10)
VY?=?Math.Min(VY?+?上下?*?VA,?10)
X?+=?VX
Y?+=?VY
If?X??0?Then?X?=?2?:?VX?=?-VX
If?Y??0?Then?Y?=?2?:?VY?=?-VY
If?X??Width?-?移動控件.Width?Then?X?=?Width?-?移動控件.Width?-?2?:?VX?=?-VX
If?Y??Height?-?移動控件.Height?Then?Y?=?Height?-?移動控件.Height?-?2?:?VY?=?-VY
移動控件.Location?=?New?Point(X,?Y)
End?Sub
End?Class
.net的代碼真木有寫過。
VB 可以屏蔽 包括ctrl+alt+del在內(nèi)的所有鍵盤按鍵消息
其實(shí)你只要后臺截獲按鍵的消息后,直接屏蔽掉就可以了。
VB代碼我有 net木有。
這是不可能完成的任務(wù),.NET平臺不存在開發(fā)驅(qū)動的能力,你要想在驅(qū)動層對鍵盤操作,最好使用C,C++來實(shí)現(xiàn),比較方便。 像現(xiàn)在一些比較出名的網(wǎng)絡(luò)游戲,都是在驅(qū)動層進(jìn)行保護(hù)的。
長按你可以用計(jì)時器來實(shí)現(xiàn)啊,寫個例子:
Private blCtrl As Boolean = False
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.LControlKey Then blCtrl = True
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
If e.KeyCode = Keys.LControlKey Then blCtrl = False
End Sub
然后你可以在計(jì)時器里檢測blCtrl的狀態(tài)來確定,不知道你的具體情況是什么樣的
總之是用一個布爾變量來記錄按鍵狀態(tài),配合計(jì)時器來達(dá)到你想要的功能