
こんにちは,いつもお世話になっています.
C#を用いて,ローカルに保存したhtmlファイルをwebBrowserで表示し,
そこに表示されたテキストの一部をマウスで選択してボタンアクションで取得するような機能を実現したいと考えています.
現在WebBrowser.Document.Body.InnerText.Substring(int, int)を使用して選択された文字列を取得しようと考えているのですが,
ブラウザで表示されているテキストにはtextBoxでいうところのselectionStartsやselectionLengthのようなプロパティがありません.
どのようにしたら可能になるでしょうか.
もちろん目的の機能が実現できるならば上記の方法にこだわるつもりはありません.
他に何か方法がありそうでしたらそちらも教えていただけないでしょうか.
プログラミング初心者ですので質問の仕方に至らない部分があるとは思いますが,
どうぞよろしくお願いいたします.
No.1ベストアンサー
- 回答日時:
'VB.NETで書いているが,使っているクラスやらメソッドやらは同じなので
'C#やってれば大体想像が付くはず。
'VB.NETで使っているDirectCastは普通にキャストしてくれ。
'なお,
'[.NET]タブから
'System
'System.Windows.Forms(Formや各種コントロールのため)
'System.Drawing (Sizeクラスのため)
'を,
'[COM]タブから
'Microsoft HTML Object Library 【重要】
'を読み込む必要があるので注意
Namespace Q3475698
Public Class Q3475698A
Shared Sub Main
Dim Form1 As New Q3475698B
Form1.ShowDialog
End Sub
End Class
Public Class Q3475698B
Inherits System.Windows.Forms.Form
Private Webbrowser1 As System.Windows.Forms.WebBrowser
Private TextBox1 As System.Windows.Forms.TextBox
Private Button1 As System.Windows.Forms.Button
Sub New
Webbrowser1 = New System.Windows.Forms.WebBrowser
TextBox1 = New System.Windows.Forms.TextBox
Button1 = New System.Windows.Forms.Button
Me.Size = New System.Drawing.Size(800,600)
With Webbrowser1
.Left = 0
.Top = 0
.Size = New System.Drawing.Size(800,550)
End With
With TextBox1
.Left = 0
.Top = 550
.Size = New System.Drawing.Size(600,20)
End With
With Button1
.Left = 600
.Top = 550
.Size = New System.Drawing.Size(200,20)
End With
Me.Controls.AddRange(New System.Windows.Forms.Control(){Webbrowser1,TextBox1,Button1})
AddHandler Button1.Click,AddressOf OnButton1_Click
Webbrowser1.Navigate("http://www.google.co.jp/")
End Sub
Private Function OnButton1_Click() As Boolean
TextBox1.Text = GetSelectionText()
Return True
End Function
Public Function GetSelectionText() As String
'MSの資料
'http://msdn2.microsoft.com/en-us/library/aa76884 …
'を見ると,createRangeメソッドはControlRangeであることもあるらしいが,俺は良く解らんのでのでそこら辺は自分で調べて頑張れ。
Dim Range As mshtml.IHTMLTxtRange = DirectCast(DirectCast(Webbrowser1.Document.DomDocument, mshtml.IHTMLDocument2).selection.createRange, mshtml.IHTMLTxtRange)
Return Range.text
End Function
End Class
End Namespace
himajin100000 様
お返事ありがとうございます.
ここまで丁寧に回答をしていただき非常にうれしく思います.
私も他の人にアドバイスできるよう精進したいと思います.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String.containsの反対機能はあ...
-
YYYYMMDD書式の日付に対する適...
-
StringBufferからStringへキャ...
-
abstract と static を一緒に付...
-
Google Apps Script で getRang...
-
「タイプ初期化子が例外をスロ...
-
中学のクラス数
-
【sendkeysメソッドが動かずに...
-
インスタンス参照でアクセスで...
-
ヒグマを撃退
-
private static という変数の修飾
-
VBScriptからストアドプロシー...
-
どこからも呼ばれていない無意...
-
eclipse-Tomcatでのデバッグに...
-
サーブレットコンテキストの意...
-
javascriptのイベント処理につ...
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
ラジオボタンの選択判定
-
エクセルVBAで、条件に一致する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
String.containsの反対機能はあ...
-
Java初級 引数に適用できません
-
レコード件数の表示
-
StringBufferからStringへキャ...
-
readLine()ではじめから読み直...
-
C# 点の描き方をおしえてくだ...
-
C# の ByVal と ByRef について
-
Google Apps Script で getRang...
-
abstract と static を一緒に付...
-
return new使用時
-
説明文書でのメソッド・変数の...
-
CSVから読み込んだデータの保持...
-
Javaの問題なんですが、練習14-...
-
スーパークラスからサブクラス...
-
YYYYMMDD書式の日付に対する適...
-
java ジェネリックスに関して
-
シェルスクリプトからのJavaメ...
-
リストボックスの並べ替え (VB...
-
Java の配列の中身は volatile ...
-
なぜprotected overrideなのか
おすすめ情報