2017-07-08 71 views
-1

有人知道如何在只讀文本框(ReadOnly = true)中阻止焦點/選擇,而不使用enabled = false?塊焦點/在只讀文本框中選擇

謝謝!

+0

爲什麼你不想設置'Enabled'? – Ryan

+2

看來你想要一個TextBox作爲一個標籤。這引發了一個問題:爲什麼不使用標籤? – TnTinMn

回答

0

我不確定我完全理解你爲什麼要這樣做。只讀文本框允許用戶選擇允許用戶將文本複製到其他目的。我從你的問題中想到的是,你不希望TextBox在用戶通過控件切換時接受輸入焦點,而我認爲這是一個更常見的要求。

您可以通過代碼實現這一點:

TextBox1.TabStop = False 

確保標籤不直接集中到只讀文本框。您也可以在設計師中使用與屏幕截圖相同的屬性來實現此目的。

Setting TabStop via the designer

0

控件有一個GotFocus事件。您可以通過調用另一個控制Select()或使用SelectNextControl添加事件處理此事件,並給另一個控制的重點,例如:

Private Sub MyTextBox_GotFocus(sender as Object, e as EventArgs) _ 
Handles MyTextBox.GotFocus 
    MyTextBox.Parent.SelectNextControl(MyTextBox, True, True, True, True) 
End Sub 

或者,你可以創建一個繼承TextBox一個自定義的控制和設置ControlStyles.SelectableFalse

Public Class NonSelectableTextBox Inherits TextBox 
    Public Sub New() 
     SetStyle(ControlStyles.Selectable, false) 
    End Sub 
End Class 

設置ControlStyles.Selectable爲false將使TextBox模仿有該位設置爲False其他控件的行爲:

  • 標籤
  • 面板
  • 分組框中
  • 的PictureBox
  • ProgressBar
  • 分配器
  • 的LinkLabel(當存在於控制沒有鏈接)