テキストボックス内の行数が表示される行数を超えている場合にのみスクロールバーをテキストボックスに表示/非表示できますか?内容が境界を超えているときにテキストボックス内にスクロールバーを表示する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. jQuery:テキストボックスに内容があるときにボタンを表示させる
- 3. NSArrayの境界を超えるインデックス4
- 4. テキストボックスに内容をすべて大文字で表示
- 5. Java - JPanelとその内容境界を設定する方法
- 6. プログラムの引数テキストボックスの内容表示
- 7. 親コントロールの境界内にユーザーコントロールのコントロールを表示します
- 8. 内容を超えてdivを展開する
- 9. テキストボックス内のスパン/ラベルテキストを表示して非表示にする
- 10. textBox1の内容をtextBox2の内容に置き換える
- 11. 画面の境界を超えて拡大するスピナー
- 12. NSTextFieldの内容が0のときに空のフィールドを表示
- 13. IEで表示されているときにiframe内に隠されたテキストボックスが表示されない
- 14. 内側のdiv親のdivの100%の幅が境界を超えています
- 15. 重複しているビューの境界を超えている(偽のアクションバー)
- 16. C/GDB:アドレスの内容を表示
- 17. テキストボックスにArraylistの内容を入力するC#
- 18. 入力中にテキストボックスの内容を別のテキストボックスにコピーする
- 19. データセット内の行数を数え、テキストボックスにテキストとして表示しますか?
- 20. ドラッグして内容を表示/非表示にします
- 21. Panel内でVerticleスクロールバーが表示されるようにする
- 22. HtmlRenderer C#でレンダリングされたイメージ内に表の境界線が表示されない
- 23. UITableViewヘッダーには内容が表示されています
- 24. グループボックスを非表示にすることはできますが、内容は表示できますか?
- 25. AJAXリクエストの内容を表示する
- 26. グリッドにJSON結果と 'undefined'の内容を表示する
- 27. 内容を配列に格納して表示する
- 28. イテレータ上にマップの内容を表示
- 29. ディレクトリファイルの内容をDjangoテンプレートに表示
- 30. Seam:ストリームファイルの内容をページに表示
残念ながら。スクロールバーを水平、垂直、または両方に設定できますが、必要に応じて表示/非表示にすることはできません。 – Anders
これはバティックテキストボックスにしかない - RichTextBoxを試す – Cullub