vb TextBox 禁止复制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb TextBox 禁止复制相关的知识,希望对你有一定的参考价值。

如何让用户不能复制TextBox中的内容?

截获系统消息

1。截获右键点击
2。截获Ctrl+C

代码很长。。。一时也写不好

----------
还是写出来了
原理是直接截获textbox的copy消息

以下是代码

--------

新建一个模块,添加以下代码,注意一定要放在模块中
Option Explicit

Private Const GWL_WNDPROC = (-4)
Private Const WM_RBUTTONDOWN = &H204
Public Const WM_COPY = &H301

Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
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 prevWndProc As Long

Private Function WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_COPY Then

Else
WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
End If
End Function

Sub DisableCopy(TargetTextBox As TextBox)

prevWndProc = GetWindowLong(TargetTextBox.hWnd, GWL_WNDPROC)
SetWindowLong TargetTextBox.hWnd, GWL_WNDPROC, AddressOf WndProc

End Sub

--------------
然后再窗体代码中添加
Private Sub Form_Load()
DisableCopy Text1
End Sub

即可,text1是想要禁止复制的textbox
参考技术A Enable设为False就行了,但是不能选择了。
如果要选择,我则不太清楚。
参考技术B textbox 的enabled 属性设为fals 参考技术C 很简单,把locked属性设为false就行了。 参考技术D Locked属性并不妨碍复制啊

遮蔽CTRL+C键以及系统菜单就行了
第5个回答  2008-08-07 可以设置
TextBox的属性Enabled 为 False
或使用标签
Label1.BorderStyle = 1
Label1.BackColor = &HFFFFFF
此时标签的模样与TextBox相似,可以赋值给标签的属性Caption

vb.net如何运算一个字符串

比如在textbox1中输入1*5+3-6/2,建立一个botton1控件,点击,使”5“这个结果出现在textbox2中

调用 脚本解析引擎,

textbox2.text=Eval(textbox1.text).ToString()

     Function Eval(ByVal Expressions As String) As Double
        Dim Mssc = CreateObject("MSScriptControl.ScriptControl")
        Mssc.Language = "vbscript"
        Return CDbl( Mssc.Eval(Expressions))
    End Function

不喜欢上面提示的警告的话

     textbox2.text=EvalString(textbox1.text)
     
     Function EvalString(ByVal Expressions As String) As String
        dim oType = System.Type.GetTypeFromProgID("MSScriptControl.ScriptControl")
        Dim o = System.Activator.CreateInstance(oType)
        oType.InvokeMember("Language", System.Reflection.BindingFlags.SetProperty , Nothing, o,New Object() "vbscript")
        Return oType.InvokeMember("Eval", System.Reflection.BindingFlags.InvokeMethod, Nothing, o, New Object()Expressions).ToString()
    End Function


Eval 在VB中使用,刚找到的_vb吧_百度贴吧

http://tieba.baidu.com/p/967893260

参考技术A 在按钮里面设置程序 当按下按钮时候 tetx2显示text1的东西 参考技术B 如果是windows电脑,调用vbs即可。如果要移植,那就自己写。用栈。 参考技术C 复合运算需要你自己去写算法

以上是关于vb TextBox 禁止复制的主要内容,如果未能解决你的问题,请参考以下文章

vb6.0 textbox2怎么显示不出来数据,换成 textbox1就可以了呢

如何使vb中textbox内容不能更改

编程vb.net clipboard 剪切复制粘贴

VB2010 textbox数组change事件 linklabel下划线隐藏

VB.NET中的TextBox控件详解

VB中TextBox控件的Maxlength属性的疑问