2017-09-13 6 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)。テキストエリアの 'keydown'イベントや' keypress'イベントを参照し、 'event.keyCode'を使って、キーボードで押したバックスペース/削除ボタンがあるか調べることができます。 –

+0

@ TetsuyaYamamoto tqと私は試してみます –

+0

私の答えをチェックしてください – Subaz

答えて

1

コントロールを無効にすることができます。コントロール内の文字列を無効にすることはできません。あなたができることは、文字列が変更された場合にイベントをキャンセルするイベントハンドラ(OnChangeなど)を作成することです。より一般的な解決方法は、別のコントロールに文字列を配置することです。

0

テキストボックス内の文字列を無効にすることはできませんが、その文字列内でユーザーが変更できないようにすることはできます。たとえば、ユーザーが文字を追加しようとした場合、その文字列内の変更を削除または変更した場合、その文字列が発生しないようにします。文字列のみを表示することができるたかったように、 "1 X 40 HQ STC" を削除する

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

書き込みデータの検証手順:

私はこれをしませんでした。

+0

どうすればいいですか? –

関連する問題