我正在用 C# 开发一个 Windows 窗体应用程序,它在窗体上有一个多行 TextBox 控件。
由于特定(不相关)的原因,这个 TextBox 需要在 TextBox 控件的左侧有一个垂直滚动条。我当然已经在寻找解决方案,但找不到任何解决方案……所以我的问题是:
1)有没有办法让TextBox控件(或从TextBox或TextBoxBase派生的用户控件)的自动垂直滚动条出现在左侧而不是右侧?这是首选方法,因为所有 scolling 仍然由控件处理。由于为这样的 TextBox 设置 RightToLeft 属性实际上将滚动条向左移动,我觉得这里一定有一个黑客可以利用。
或者
2) 是否有一条消息可以在 TextBox 滚动时通过 IMessageFilter 实现拦截,即使它没有滚动条?即用户可以使用箭头键滚动,文本框将上下移动行,但我找不到任何消息发生时触发。
也许另一个想法如何做到这一点?
编辑添加:文本需要水平向右对齐!否则我早就解决了。
2014 年 3 月 11 日的新编辑:好的,在 BenVlodgi 发表评论后,我开始怀疑自己的理智。所以我创建了一个测试项目,现在我记得为什么设置RightToLeft
为Yes
不起作用。
下图在左侧显示了具有该设置的常规文本框。滚动条在左侧,文本在右侧,但文本显示不正确。句末句号移到句前。
第二个 TextBox 控件是 LarsTech 的答案中建议的,它可以正常工作并且不会移动任何标点符号。
因此,我接受并奖励 LarsTech 的回答。