我试图让在即使文本框设置为启用滚动条的文本框残疾人在VB.NET的WinForms的
textbox.Enabled = False
这是不可能的一个多-文本框滚动,滚动栏是禁用启用 - 命令也一样。
这里的默认解决方案是设置
textbox.ReadOnly = True
textbox.Enabled = True
但是这并没有真正做的伎俩我。与只读我仍然可以选择文本框的文本以及将光标放在它的内部。但正如我正常(非Multiline -TextBoxes)和其他控件在同一表单上,我不希望发生这种情况。我想和所有其他禁用的TextBox具有完全相同的行为。
对于一切,就像一个残疾人文本框等的模仿色彩,没有与只读,物业合法的解决办法,但我coudn't找到任何选择文本,并把光标。
UPDATE:
随着一些提示从here我试图用WIN32 API,但预期它没有工作:
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Public Class TestTextBox
Inherits TextBox
Private Class Native
<DllImport("user32.dll")> _
Friend Shared Function EnableScrollBar(ByVal hWnd As IntPtr, ByVal wSBflags As UInteger, ByVal wArrows As UInteger) As Boolean
End Function
<DllImport("User32.dll")> _
Friend Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As UInteger, ByVal wparam As Integer, ByVal lparam As Integer) As Integer
End Function
Public Const WM_SETREDRAW As Long = &HB
Public Const ESB_ENABLE_BOTH As UInteger = 0
Public Const SB_VERT As UInteger = 1
End Class
Public Sub Change() 'Gets called by a Button in my example.
'Native.SendMessage(Me.Handle, Native.WM_SETREDRAW, New IntPtr(0), IntPtr.Zero)
Native.EnableScrollBar(Me.Handle, Native.SB_VERT, Native.ESB_ENABLE_BOTH)
'Native.SendMessage(Me.Handle, Native.WM_SETREDRAW, New IntPtr(1), IntPtr.Zero)
Me.PerformLayout()
End Sub
End Class
为什么你不使用固定大小的可滚动div来代替? –
@pOcHa - 这不是我正在谈论的Web应用程序,而是Windows Forms应用程序。 –
考虑添加一个适当的标签,因为它与您的标题或文本完全无法区分......并且仅将我以前的评论中的单词“div”替换为任何其他类型的容器 –