首页 / 知识
关于winforms:仅当文本不合适时,如何在System.Windows.Forms.TextBox上显示滚动条?
2023-04-15 23:31:00

How can I show scrollbars on a System.Windows.Forms.TextBox only when the text doesn't fit?对于具有Multiline = True的System.Windows.Forms.TextBox,我只想在文本不适合时显示滚动条。 这是一个只读文本框,仅用于显示。 这是一个TextBox,以便用户可以复制文本。 有内置的功能支持滚动条的自动显示吗? 如果没有,我应该使用其他控件吗? 还是我需要钩住TextChanged并手动检查是否溢出(如果是,那么如何确定文本是否适合?) WordWrap和Scrollbars设置的各种组合没有运气。 我希望最初没有滚动条,并且只有当文本不适合给定方向时,每个滚动条才会动态显示。 @nobugz,谢谢,在禁用WordWrap时可以使用。 我不希望禁用自动换行,但这是两种弊端中的较小者。 @AndréNeves,好点,如果它是用户可编辑的,我会采用这种方式。 我同意一致性是UI直观性的基本规则。 当我想解决同样的问题时,我遇到了这个问题。 最简单的方法是更改??为System.Windows.Forms.RichTextBox。在这种情况下,可以将ScrollBars属性保留为RichTextBoxScrollBars.Both的默认值,该值指示"在需要时同时显示水平和垂直滚动条"。如果TextBox上提供了此功能,那就太好了。 在您的项目中添加一个新类,并粘贴以下代码。编译。将新控件从工具箱的顶部拖放到窗体上。它不是很完美,但应该为您工作。
nobugz解决方案中存在一个非常细微的错误,该错误会导致堆损坏,但仅当您使用AppendText()更新TextBox时才如此。 从OnTextChanged设置ScrollBars属性将导致Win32窗口(句柄)被破坏并重新创建。但是从Win32编辑控件(EditML_InsertText)的肠中调用OnTextChanged,此后立即期望该Win32编辑控件的内部状态不变。不幸的是,由于重新创建了窗口,因此操作系统已释放了该内部状态,从而导致访问冲突。 因此,故事的寓意是:如果要使用nobugz的解决方案,请不要使用AppendText()。
我还进行了一些实验,发现垂直栏始终显示(如果启用),水平栏始终在启用和 我认为您不会在这里得到想要的东西。但是,我相信用户希望Windows的默认行为比您尝试强制的默认行为更好。如果我使用的是您的应用程序,那么我的文本框房地产突然缩水,可能仅仅是因为它需要容纳一个意外的滚动条,因为我给它提供了太多的文字,我可能会因此而烦恼! 仅仅让您的应用程序遵循Windows的外观也许是一个好主意。 我在下面的代码上取得了一些成功。
艾丹所描述的几乎就是我所面临的UI场景。由于文本框是只读的,因此我不需要它来响应TextChanged。而且,我希望延迟自动滚动的重新计算,以便在调整窗口大小时不会每秒触发数十次。 对于大多数UI而言,同时具有垂直和水平滚动条的文本框非常糟糕,因此我仅对垂直滚动条感兴趣。 我还发现MeasureString产生的高度实际上大于所需的高度。使用没有边框的文本框的PreferredHeight作为行高会带来更好的结果。 无论有没有边框,以下内容似乎都能很好地工作,并且在启用WordWrap的情况下也可以使用。 只需在需要时调用AutoScrollVertically(),然后选择指定recalculateOnResize。
|
最新内容
相关内容
linux满屏显示命令?
linux满屏显示命令?,工具,系统,服务,电脑,网络,技术,信息,数据,上会,软件,如何显示linux所有命令1、网卡。在linux系统中,ifconfig-a命令是用来显示linux时间命令?
显示linux时间命令?,时间,系统,信息,一致,命令,文件,终端,目录,选项,参数,linuxcp命令并显示拷贝时间在没有带-a参数时,两个文件的时间是不一样linux显示最多的命令?
linux显示最多的命令?,系统,情况,信息,数据,工具,电脑,状态,时间,分析,命令,在linux系统中,显示/root目录下所有文件的命令是1、ls -l /home/linux显示错误命令?
linux显示错误命令?,信息,系统,电脑,状态,时间,环境,命令,搜狐,密码,异常,虚拟机里怎么开始linux系统,打startx命令提示错误1、第一种:这个问题linux逐行显示命令?
linux逐行显示命令?,标准,信息,系统,工作,地址,命令,实时,名称,文件,目录,Linux中显示一个文件最后几行的命令是什么?1、tail -n 20 filenamelinux文本查询命令?
linux文本查询命令?,标准,命令,文件,工具,数据,信息,位置,系统,内容,文本,Linux下Grep命令的详细使用方法?1、查找root目录下包含Linux的文件,linux显示时间命令?
linux显示时间命令?,时间,系统,管理,标准,信息,单位,工具,数据,中国,命令,linux必学的60个命令安装和登录命令:login、shutdown、halt、rebootlinux在线命令文本?
linux在线命令文本?,系统,工作,信息,在线,地址,命令,基础,标准,工具,目录,Linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录linux编写文本命令?
linux编写文本命令?,工作,系统,命令,第一,信息,发行,代码,名字,文件,终端,linux中编辑文件命令linux常用命令有pwd命令、cd命令、ls命令、catlinux压缩文本的命令?
linux压缩文本的命令?,系统,图片,命令,设备,工具,位置,软件,管理,文件,目录,如何在Linux上使用tar命令解压和压缩文件1、解压 tar.bz2/bzip 归linux启动显示命令行?
linux启动显示命令行?,系统,密码,终端,状态,首页,情况,基础,电脑,信息,工具,linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信linux压缩文本的命令?
linux压缩文本的命令?,系统,图片,命令,设备,工具,位置,软件,管理,文件,目录,如何在Linux上使用tar命令解压和压缩文件1、解压 tar.bz2/bzip 归