24
|
Aidan Ryan · 技术社区 · 16 年前 |
![]() |
1
14
向项目中添加新类并粘贴下面显示的代码。编译。将新控件从工具箱顶部放到窗体上。它不太完美,但应该适合你。
|
![]() |
2
31
当我想解决同一个问题时,我遇到了这个问题。 最简单的方法是更改为System.Windows.Forms.RichTextBox。在这种情况下,ScrollBars属性可以保留为RichTextBoxScrollBars的默认值。两者都表示“需要时同时显示水平滚动条和垂直滚动条”。如果在文本框上提供此功能,那就更好了。 |
![]() |
3
7
我还做了一些实验,发现如果启用垂直条,它将始终显示,而水平条则始终显示,只要启用和
我想你在这里不会得到你想要的。但是,我相信用户希望Windows的默认行为比您试图强制的行为更好。如果我在使用你的应用程序,我可能会感到困扰,如果我的文本框房地产突然收缩,只是因为它需要容纳一个意想不到的滚动条,因为我给它太多的文本! 也许让您的应用程序遵循Windows的外观是个好主意。 |
![]() |
4
6
NoBugz的解决方案中有一个非常微妙的bug,它会导致堆损坏,但前提是使用AppendText()更新文本框。 从ContextChanged设置ScrollBars属性将导致销毁并重新创建Win32窗口(句柄)。但是,ContextChanged是从Win32编辑控件(editml_inserttext)的内部调用的,该控件的内部状态将立即保持不变。不幸的是,由于窗口被重新创建,操作系统释放了该内部状态,导致访问冲突。 所以这个故事的寓意是:如果要使用NoBugz的解决方案,就不要使用AppendText()。 |
![]() |
5
2
我在下面的代码方面取得了一些成功。
|
![]() |
6
0
Aidan所描述的几乎就是我所面对的UI场景。因为文本框是只读的,所以我不需要它来响应TextChanged。我更喜欢自动滚动重新计算被延迟,这样在调整窗口大小时,它不会每秒触发几十次。 对于大多数UI来说,带有垂直和水平滚动条的文本框都很糟糕,所以我只对垂直滚动条感兴趣。 我还发现测量产生的高度实际上比要求的要大。使用文本框的preferredheight(不带边框)作为行高可以得到更好的结果。 下面的内容似乎很好地工作,不管有没有边框,它都适用于自动换行。 只需在需要时调用autoscrollVertical(),并可以选择指定RecalculationResize。
|
![]() |
JOO · 使用udpClient从多个IP地址连续接收数据 2 年前 |
![]() |
Futterkiste · 函数比例图 2 年前 |
![]() |
user18789895 · 我应该如何验证WinForms应用程序? 2 年前 |
![]() |
beriscen · 如何使整个链接标签区域可点击? 2 年前 |
![]() |
lpmaxim · 当鼠标光标悬停在按钮上时,背景图像会移动 3 年前 |