2009/08/12(Wed) 21:26:22 編集(投稿者)
■No39743 (RT さん) に返信
> 魔界の仮面弁士さん、
名指しは止めましょう。私以外の人も回答してくださっていますよ。
> 下の文章の方のやり方は分りますでしょうか?
> > 今、使用変更を検討してまして、ウェブブラウザ上で、選択した部分のテキストを取得して、
TD 全体のテキストであれば、No39742 の方法で InnerText を得れば OK です。
選択した範囲のテキストという意味であれば、
> > WebBrowserのdocumentをmshtml.HTMLDocumentにキャストして
> > .selection.createRange().text
に近いですが、それで取得できるのはあくまでも VB の場合。
mshtml.HTMLDocument にしても mshtml.IHTMLDocument2 にしても、
.selection.createRange() の戻り値は object 型なので、C# の場合には、
それを mshtml.IHTMLTxtRange にキャストしないと、.text にアクセスできません。
> 別ウィンドウに表示して、
Windows フォームを開くという意味であれば、新規 Form のインスンタンスを生成して、
Show メソッドなり ShowModalDialog メソッドなりを呼び出せば OK です。
ブラウザのウィンドウを開くという意味であれば、
webBrowser1.Document.Window.Open メソッドを利用できます。
> > 編集するということを考えています。
編集結果を反映させるには、InnerText 等を直接書き換えるなど、幾つかの手法がありますが、
いっそのこと、WebBrowser 上で直接編集させてしまっては駄目ですか?
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.Body.SetAttribute("contentEditable", "true");
}