如何禁用文本框内的某些字符串?
我按照以下代码所做的操作显示文本框内的所有数据都被禁用。如何禁用文本框内的某些字符串?
Private Sub chkSTC_CheckedChanged(sender As Object, e As System.EventArgs) Handles chkSTC.CheckedChanged
Select Case chkSTC.Checked
Case True
txtCargoDescription.Enabled = False
Case False
txtCargoDescription.Enabled = True
End Select
End Sub
End Class
如何从文本框中仅禁用某个字符串,即"1 X 40 HQ STC"
。我应该添加什么?
请参考此图片:
谢谢先进!
您只能禁用控件。您不能禁用控件中的字符串。您可以做的最好的事情是编写事件处理程序(例如OnChange),如果它将导致字符串被修改,则会取消该事件。但更常见的解决方案是将字符串放在单独的控件中。
您不能禁用文本框内的字符串,但可以防止用户在该字符串内进行更改。例如,如果用户试图添加一个字符,请删除或在该字符串内进行任何更改,不要让它们发生。
我这样做:
Private Sub TextBox1_KeyUp(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
'see if any change is made between the first 13 characters (13 characters because "1 X 40 HQ STC" had 13 chars)
If sender.selectionstart <= 14 Then
'see if a character is deleted (tried to press backspace or delete key)
If e.KeyCode = 8 Or e.KeyCode = 46 Then
'replace the first 12 characters with our orignal text
TextBox1.Text = TextBox1.Text.Replace(TextBox1.Text.Substring(0, 12), "1 X 40 HQ STC")
'if left or right key is pressed
ElseIf e.KeyCode = Keys.Left Or e.KeyCode = Keys.Right Then
'do nothing
ElseIf e.KeyCode = Keys.Enter Then
TextBox1.Text = TextBox1.Text.Replace(TextBox1.Text.Substring(0, 15), "1 X 40 HQ STC")
Else
'it means other text is added, remove 14 characters and put our original string
TextBox1.Text = TextBox1.Text.Replace(TextBox1.Text.Substring(0, 14), "1 X 40 HQ STC")
End If
'set the cursor to 15th character, i.e. next line
sender.selectionstart = 15
End If
End Sub
HI Subaz,你可以从我的代码上面显示吗?因为'“1 X 40 HQ STC”'从数据库中检索。 –
你是什么意思? – Subaz
写入数据验证程序,取消“1×40 HQ STC”,这样只希望可以显示的字符串。
如果你不介意可以请怎么做? –
似乎这个解决方案符合你想要的客户端:https://stackoverflow.com/a/21982192。您可以在textarea中引用'keydown'或'keypress'事件,然后使用'event.keyCode'来查找键盘中按下的退格键/删除键。 –
@TetsuyaYamamoto tq,我会尝试 –
看看我的回答 – Subaz