テキストボックス内の行数が表示される行数を超えている場合にのみスクロールバーをテキストボックスに表示/非表示できますか?内容が境界を超えているときにテキストボックス内にスクロールバーを表示するC#
答えて
はRichTextBoxを使用することを検討してください - それは内蔵のその行動を持って
ああ、オースティンに感謝します。ときどき最も明白な解決策は最高です:) – Anders
RichTextBoxにScrollViewer.VerticalScrollBarVisibility = "Auto"プロパティを追加することを忘れないでください。 – Smile4ever
Public Class TextBoxScrollbarPlugin
Private WithEvents mTarget As TextBox
''' <summary>
''' After the Handle is created, mTarget.IsHandleCreated always returns
''' TRUE, even after HandleDestroyed is fired.
''' </summary>
''' <remarks></remarks>
Private mIsHandleCreated As Boolean = False
Public Sub New(item As TextBox)
mTarget = item
mIsHandleCreated = mTarget.IsHandleCreated
End Sub
Private Sub Update()
If Not mTarget.IsHandleCreated Then
Return
ElseIf Not mIsHandleCreated Then
Return
End If
Dim textBoxRect = TextRenderer.MeasureText(mTarget.Text,
mTarget.Font,
New Size(mTarget.Width, Integer.MaxValue),
TextFormatFlags.WordBreak + TextFormatFlags.TextBoxControl)
Try
If textBoxRect.Height > mTarget.Height Then
mTarget.ScrollBars = ScrollBars.Vertical
Else
mTarget.ScrollBars = ScrollBars.None
End If
Catch ex As System.ComponentModel.Win32Exception
'this sometimes throws a "failure to create window handle"
'error.
'This might happen if the TextBox is unvisible and/or
'to small to display a toolbar.
If mLog.IsWarnEnabled Then mLog.Warn("Update()", ex)
End Try
End Sub
Private Sub mTarget_HandleCreated(sender As Object, e As System.EventArgs) Handles mTarget.HandleCreated
mIsHandleCreated = True
End Sub
Private Sub mTarget_HandleDestroyed(sender As Object, e As System.EventArgs) Handles mTarget.HandleDestroyed
mIsHandleCreated = False
End Sub
Private Sub mTarget_SizeChanged(sender As Object, e As System.EventArgs) Handles mTarget.SizeChanged
Update()
End Sub
Private Sub mTarget_TextChanged(sender As Object, e As System.EventArgs) Handles mTarget.TextChanged
Update()
End Sub
End Class
Private mPlugins As New List(Of Object)
Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
mPlugins.Add(New TextBoxScrollbarPlugin(txtBoxOne))
mPlugins.Add(New TextBoxScrollbarPlugin(txtBoxTwo))
mPlugins.Add(New TextBoxScrollbarPlugin(txtBoxThree))
End Sub
Textboxを使用する必要がある人は(カスタムコントロールのように)上記答えはうまくいくようです。私は+をORで置き換えてビット単位にしなければならないと仮定し、textbox.wordwrapの値に条件付きで条件を付けました。それがほしいと思っています。 – Tim
おかげダミー、それが動作します。!ここでは、C#でダミーの答えの短いバージョンあなたSizeChangedの終わりに
コールこのコードをしてハンドラをTextChanged:
Size textBoxRect = TextRenderer.MeasureText(
this.YourTextBox.Text,
this.YourTextBox.Font,
new Size(this.YourTextBox.Width, int.MaxValue),
TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl);
try
{
this.YourTextBox.ScrollBars = textBoxRect.Height > this.YourTextBox.Height ?
ScrollBars.Vertical :
ScrollBars.None;
} catch (System.ComponentModel.Win32Exception)
{
// this sometimes throws a "failure to create window handle" error.
// This might happen if the TextBox is unvisible and/or
// too small to display a toolbar.
}
私はVBで働いtnimasソリューションを持っています。書かれたように機能し、エラーは見られませんでした。
Private Sub TextBoxSizeChanged(sender As Object, e As EventArgs) Handles Me.SizeChanged
Dim textBoxRect As Size = TextRenderer.MeasureText(TextBox.Text, TextBox.Font, New Size(TextBox.Width, Integer.MaxValue), TextFormatFlags.WordBreak Or TextFormatFlags.TextBoxControl)
Try
TextBox.ScrollBar = If(textBoxRect.Height > TextBox.Height, ScrollBars.Vertical, ScrollBars.None)
Catch ex As Exception
'handle error
End Try
End Sub
- 1. DDMS FileExplorerの内容がeclipseを超えて表示IDE
- 2. Wordファイルの内容をテキストボックスに表示
- 3. WPF:テキストボックス/コンボボックスの内容がウィンドウの画面を超えます
- 4. jQuery:テキストボックスに内容があるときにボタンを表示させる
- 5. NSArrayの境界を超えるインデックス4
- 6. テキストボックスに内容をすべて大文字で表示
- 7. すべての配列の内容をテキストボックスに表示
- 8. プログラムメモリ内のページ境界を越える
- 9. ツールチップの内容がモニタディスプレイを超えたときに失われる
- 10. Java - JPanelとその内容境界を設定する方法
- 11. pタグの内容が列幅を超えています
- 12. NetCDF:開始+カウントが次元境界を超えています
- 13. プログラムの引数テキストボックスの内容表示
- 14. 親コントロールの境界内にユーザーコントロールのコントロールを表示します
- 15. テキストボックス上のパネルにテキストボックスの境界線の赤色が表示される
- 16. Expandable List Viewグループの位置変数によってインデックスが境界を超えて表示される
- 17. Stackviewセルの境界を超えているカスタムコントロール
- 18. 内容を超えてdivを展開する
- 19. MS検索テキストボックスの内容とリストボックスに表示
- 20. liの内容が重複しないようにするカラムの境界線
- 21. ファイルがJSONでないときに$ http.getの内容を表示するには?
- 22. テキストボックス内のスパン/ラベルテキストを表示して非表示にする
- 23. コンソールのウィンドウを開いたときに内容が消える
- 24. 使用CSSはTdとの国境を超えるTrの境界底が表に
- 25. textBox1の内容をtextBox2の内容に置き換える
- 26. 画面の境界を超えて拡大するスピナー
- 27. 親ビューを超えているときにラベル/ボタンを非表示にする
- 28. ボタンをクリックすると3つのテキストボックスの内容を別のテキストボックスに表示する方法
- 29. 内容がオーバーフローした場合にスクロールバーを表示させます
- 30. テキストボックスにArraylistの内容を入力するC#
残念ながら。スクロールバーを水平、垂直、または両方に設定できますが、必要に応じて表示/非表示にすることはできません。 – Anders
これはバティックテキストボックスにしかない - RichTextBoxを試す – Cullub