如何在運行時改單行文本框為多行文本框?

CatchWind 2005-07-28 10:43:21
我用了如下代碼, 無效,但編輯時文本框變成右對齊了

Option Explicit

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const ES_AUTOVSCROLL = &H40
Private Const ES_MULTILINE = &H4
Private Const ES_WANTRETURN = &H1000
Private Const GWL_EXSTYLE = (-20)

Private Const WS_CHILD = &H40000000
Private Const WS_VISIBLE = &H10000000
Private Const WS_TABSTOP = &H10000
Private Const WS_VSCROLL = &H200000

Private Sub Command1_Click()
Dim rtn As Long

rtn = GetWindowLong(Text1.hWnd, GWL_EXSTYLE)
rtn = rtn Or ES_MULTILINE Or WS_VSCROLL Or ES_WANTRETURN
SetWindowLong Text1.hWnd, GWL_EXSTYLE, rtn
End Sub

...全文
151 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2005-08-04
  • 打赏
  • 举报
回复
微软的 Notepad 就是两个TextBox,控制是否自动换行。
CatchWind 2005-08-04
  • 打赏
  • 举报
回复
看來是不行的了, 結貼
kmlxk0 2005-08-03
  • 打赏
  • 举报
回复
@_@我猜是不是ES_LEFT的缘故

hwndedit = CreateWindow("EDIT",
NULL,
WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL|ES_LEFT|ES_MULTILINE
|ES_AUTOVSCROLL|ES_AUTOHSCROLL,
0,0,0,0,
hwnd,
(HMENU)ID_EDITCHILD,
hinst,
NULL) ;

从http://community.csdn.net/Expert/topic/3785/3785814.xml?temp=.2626001 Copy过来的
lingll 2005-08-03
  • 打赏
  • 举报
回复
最简单的做法,用两个文本框
liubeiqi 2005-08-01
  • 打赏
  • 举报
回复
MULTILINE属性,好像不可以在程序中动态去修改
byeshuang 2005-08-01
  • 打赏
  • 举报
回复
MULTILINE 屬性是只读属性,只能在设计时设置,运行时不能设置。
sdrcxzy 2005-08-01
  • 打赏
  • 举报
回复
有可能吧。不行了,被你的繁体字搞晕了。
CatchWind 2005-08-01
  • 打赏
  • 举报
回复
是不是文本框的ES_MULTILINE 屬性只能在創建時使用, 不能在創建后更改?
CatchWind 2005-07-30
  • 打赏
  • 举报
回复
自己做已測試過,能實現運行時動態設置MultiLine ,原理是當其屬性改變銷毀原對象再重新生成,但很多屬性要重新映射, 太麻煩了.
fishmans 2005-07-30
  • 打赏
  • 举报
回复
要真有这样的需求就自已做个OCX好了
小泽zz 2005-07-28
  • 打赏
  • 举报
回复
可以改 MultiLine = True

在程序中是不能改的~~只读属性

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧