根本就不可能,webbrowser的你說的功能被封裝在控件里了,而且沒法調(diào)用,除非你重載(overload)不知道你要這個有什么用。如果是為了實現(xiàn)像safari或者火狐之類的高亮搜索或者選擇一段文字然后彈出關(guān)于這段文字的搜索框的功能就不要用webbrowser,引為webbrowser實質(zhì)上是IE的內(nèi)核,所以這些功能基本沒有希望。等等吧,等VS2010出來,其中的webbrowser版本就應(yīng)該是IE8的版本了。如果想做大就全部靠自己,不要相信什么控件。相信我吧,我學(xué).NET很多年了
10年積累的成都做網(wǎng)站、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先做網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有湘潭免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Long '全屏坐標聲明
Private Declare Function ScreenToClient Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpPoint As POINTAPI) As Int32 '窗口坐標聲明
Private Structure POINTAPI '聲明坐標變量
Public x As Int32 '聲明坐標變量為32位
Public y As Int32 '聲明坐標變量為32位
End Structure
'以上是聲明部分
'以下是窗口部分
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick '用時鐘控件來取坐標,窗口上放個Timer組件,Enabled為允許,周期為10到100毫秒均可
Dim P As POINTAPI '聲明坐標變量
Dim xx, yy '聲明轉(zhuǎn)換要用到的變量
GetCursorPos(P) '獲取鼠標在屏幕中的位置
ScreenToClient(Me.Handle.ToInt32, P) '轉(zhuǎn)換為本窗體的坐標
xx = P.x.ToString '把X轉(zhuǎn)換成能顯示到文本框的字符串格式
yy = P.y.ToString '把Y轉(zhuǎn)換成能顯示到文本框的字符串格式
TextBox1.Text = xx + "和" + yy '文本框的內(nèi)容為X坐標和Y坐標
End Sub
TextBoxBase.GetPositionFromCharIndex 方法
檢索控件內(nèi)指定字符索引處的位置。
此方法使您得以確定特定字符索引在控件中的位置。此方法可用于諸如顯示快捷菜單項或控件中某個單詞的幫助信息等任務(wù)。例如,如果希望當用戶在控件中的單詞上右擊時向用戶顯示選項菜單,則可以使用此方法確定單詞的位置以正確顯示 ContextMenu 控件。
Control.PointToScreen 方法
將指定工作區(qū)點的位置計算成屏幕坐標。
在很多的編輯軟件中有這樣一個功能,即當用戶在編輯區(qū)中輸入字符或者按動鼠標使得光標的位置改變時,在編輯軟件下方的狀態(tài)欄中就能顯示出光標所在位置的行和列的值。下面就介紹如何用VB編程實現(xiàn)在文本框中的這一功能。
首先,在Form中添加一個文本框(TextBox),將其MultiLine屬性設(shè)置為True,以便輸入多行文本;再在Form中添加兩個標題欄(Label),以便顯示光標位置;然后,在Form的代碼窗口中添加程序中的代碼。
Option Explici
Const EM_GETSEL = HB0
Const EM_LINEFROMCHAR = HC9
Const EM_LINEINDEX = HBB
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Sub GetCaretPos(ByVal TextHwnd As Long, LineNo As Long, ColNo As Long)
Dim I As Long, j As Long
Dim lParam As Long, wParam As Long
Dim k As Long
'首先向文本框傳遞EM_GETSEL消息以獲取從起始位置到
'光標所在位置的字符數(shù)
I = SendMessage(TextHwnd, EM_GETSEL, wParam, lParam)
j = I / 2 ^ 16
'再向文本框傳遞EM_LINEFROMCHAR消息根據(jù)獲得的字符
'數(shù)確定光標以獲取所在行數(shù)
LineNo = SendMessage(TextHwnd, EM_LINEFROMCHAR, j, 0)
LineNo = LineNo + 1
'向文本框傳遞EM_LINEINDEX消息以獲取所在列數(shù)
k = SendMessage(TextHwnd, EM_LINEINDEX, -1, 0)
ColNo = j - k + 1
End Sub
Private Sub Form_Load()
Dim LineNo As Long, ColNo As Long
Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
Label1.Caption = LineNo
Label2.Caption = ColNo
End Sub
Private Sub Form_Resize()
Text1.Width = Me.ScaleWidth
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim LineNo As Long, ColNo As Long
Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
Label1.Caption = LineNo
Label2.Caption = ColNo
End Sub
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim LineNo As Long, ColNo As Long
Call GetCaretPos(Text1.hwnd, LineNo, ColNo)
Label1.Caption = LineNo
Label2.Caption = ColNo
End Sub
(程序)
運行上面的程序,在TextBox中輸入字符或者按控制鍵來移動光標時,你可以看到屏幕下面的Label中就能顯示出的光標所在的位置。以上程序在Win 95,VB 5.0下運行通過。