簡體   English   中英

如果光標在文本框中的兩個字符串之間(VB.net),則顯示按鈕

[英]show button if cursor is between two strings in a textbox (VB.net)

基本上,我在文本框中有如下幾行:

### = 1232, 1234, 1236, 1238, 123A, 123C ; comment here ### = 1232, 1234, 1236, 1238, 123A, 123C ; comment here我想在文本框內的插入符號(光標管道的東西)顯示為數字時顯示一個按鈕,例如:

... , 12|31, ....... , 123|1, ....等(管道是插入符號)

我編寫了代碼來檢查它是否在數字中,並在單擊按鈕時獲取數字,但是如果我將代碼放入選擇更改事件中,它將無法正常工作。

哦,數字最多可以是8位十六進制數。

TextBox沒有告訴您用戶移動了插入符號的事件。 您必須使用Application.OnIdle事件來合成一個。 它在處理所有輸入事件(鼠標,鍵盤)之后運行。 您會做一些額外的不必要的工作,但是您永遠不會注意到,因為此代碼是在“人類時間”中運行的。 例如:

Public Class Form1

  Public Sub New()
    InitializeComponent()
    AddHandler Application.Idle, AddressOf UpdateButtonState
  End Sub

  Private Sub updateButtonState(ByVal sender As Object, ByVal e As EventArgs)
    Const hexdigits As String = "0123456789ABCDEF"
    Dim caretPos As Integer = TextBox1.SelectionStart
    Dim enable As Boolean = caretPos > 0 AndAlso caretPos < TextBox1.Text.Length
    If enable Then
      Dim left As Char = Char.ToUpper(TextBox1.Text(caretPos - 1))
      Dim right As Char = Char.ToUpper(TextBox1.Text(caretPos))
      If Not hexdigits.Contains(left) OrElse Not hexdigits.Contains(right) Then enable = False
    End If
    Button1.Enabled = enable
  End Sub
End Class

如果多余的工作困擾您,請檢查文本框是否具有焦點並跟蹤其上一個SelectionStart值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM