2017-09-13 79 views
2

我按照以下代码所做的操作显示文本框内的所有数据都被禁用。如何禁用文本框内的某些字符串?

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"。我应该添加什么?

请参考此图片:

Please refer this image

谢谢先进!

+0

似乎这个解决方案符合你想要的客户端:https://stackoverflow.com/a/21982192。您可以在textarea中引用'keydown'或'keypress'事件,然后使用'event.keyCode'来查找键盘中按下的退格键/删除键。 –

+0

@TetsuyaYamamoto tq,我会尝试 –

+0

看看我的回答 – Subaz

回答

1

您只能禁用控件。您不能禁用控件中的字符串。您可以做的最好的事情是编写事件处理程序(例如OnChange),如果它将导致字符串被修改,则会取消该事件。但更常见的解决方案是将字符串放在单独的控件中。

0

您不能禁用文本框内的字符串,但可以防止用户在该字符串内进行更改。例如,如果用户试图添加一个字符,请删除或在该字符串内进行任何更改,不要让它们发生。

我这样做:

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 
+0

HI Subaz,你可以从我的代码上面显示吗?因为'“1 X 40 HQ STC”'从数据库中检索。 –

+0

你是什么意思? – Subaz

0

写入数据验证程序,取消“1×40 HQ STC”,这样只希望可以显示的字符串。

+0

如果你不介意可以请怎么做? –

相关问题