C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: ウェブブラウザで表示したデータをクリックして、編集


(過去ログ 68 を表示中)

[トピック内 16 記事 (1 - 16 表示)]  << 0 >>

■39729 / inTopicNo.1)  ウェブブラウザで表示したデータをクリックして、編集
  
□投稿者/ RT (24回)-(2009/08/12(Wed) 19:08:00)

分類:[C#] 

2009/08/12(Wed) 19:46:51 編集(投稿者)
2009/08/12(Wed) 19:31:41 編集(投稿者)
2009/08/12(Wed) 19:29:34 編集(投稿者)

たびたびお世話になっております、RTです。

Visual C# 2008 Express Editionで開発を行っております。

質問を変えます。すいません。

今回質問したいのは、ウェブブラウザで表示されているデータを、HTMLコードでTDタグに囲まれているテキストデータごとにデータを認識し、それをクリックすると、クリックした部分のTDタグで囲まれたテキストデータを別ウィンドウで表示させるということです。

足がかりがほしいので、アドバイスお願いします。

引用返信 編集キー/
■39731 / inTopicNo.2)  Re[1]: ウェブブラウザで表示したデータをボタンに変える。
□投稿者/ Jitta on the way (380回)-(2009/08/12(Wed) 19:24:14)
No39729 (RT さん) に返信
> たびたびお世話になっております、RTです。
>
> Visual C# 2008 Express Editionで開発を行っております。
>
> 今回質問したいのは、ウェブブラウザで表示されているデータを、HTMLコードでTDタグに囲まれているテキストデータごとに、それぞれをボタンに変える方法です。
>
> 足がかりがほしいので、アドバイスお願いします。
>

http://bbs.wankuma.com/index.cgi?mode=al2&namber=39541

ここで聞いたことが足掛かりじゃないの?
引用返信 編集キー/
■39734 / inTopicNo.3)  Re[2]: ウェブブラウザで表示したデータをボタンに変える。
□投稿者/ RT (25回)-(2009/08/12(Wed) 19:30:32)
No39731 (Jitta on the way さん) に返信
> ■No39729 (RT さん) に返信
>>たびたびお世話になっております、RTです。
>>
>>Visual C# 2008 Express Editionで開発を行っております。
>>
>>今回質問したいのは、ウェブブラウザで表示されているデータを、HTMLコードでTDタグに囲まれているテキストデータごとに、それぞれをボタンに変える方法です。
>>
>>足がかりがほしいので、アドバイスお願いします。
>>
>
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=39541
>
> ここで聞いたことが足掛かりじゃないの?

すいません、質問の内容を変えました。
引用返信 編集キー/
■39739 / inTopicNo.4)  Re[1]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ Jitta on the way (383回)-(2009/08/12(Wed) 19:56:00)
No39729 (RT さん) に返信
> 今回質問したいのは、ウェブブラウザで表示されているデータを、HTMLコードでTDタグに囲まれているテキストデータごとにデータを認識し、

ここはできたのかな?
ところで、その解析対象のページは、アプリケーションを使う人から見て、どの様な関係を持っているのでしょうか。

あるいはアプローチを変えて、今作っているアプリケーションに、データをHTMLに変換する機能を持たせる方が、簡単かも知れません。

クリックした位置にある要素を取得するって、出来るのかな?要素の座標がわかっているなら可能でしょうが、absoluteやrelativeに指定されていない要素は座標を持っていないような?
引用返信 編集キー/
■39740 / inTopicNo.5)  Re[2]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ Jitta on the way (384回)-(2009/08/12(Wed) 20:00:34)
No 39650

当たった!!
引用返信 編集キー/
■39741 / inTopicNo.6)  Re[2]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ RT (26回)-(2009/08/12(Wed) 20:07:31)
No39739 (Jitta on the way さん) に返信
> ■No39729 (RT さん) に返信
>>今回質問したいのは、ウェブブラウザで表示されているデータを、HTMLコードでTDタグに囲まれているテキストデータごとにデータを認識し、

似たようなことは出来ています。

> ここはできたのかな?
> ところで、その解析対象のページは、アプリケーションを使う人から見て、どの様な関係を持っているのでしょうか。

アプリケーションを使う人が編集をします。

> あるいはアプローチを変えて、今作っているアプリケーションに、データをHTMLに変換する機能を持たせる方が、簡単かも知れません。
>
> クリックした位置にある要素を取得するって、出来るのかな?要素の座標がわかっているなら可能でしょうが、absoluteやrelativeに指定されていない要素は座標を持っていないような?

今、使用変更を検討してまして、ウェブブラウザ上で、選択した部分のテキストを取得して、別ウィンドウに表示して、編集するということを考えています。

WebBrowserのdocumentをmshtml.HTMLDocumentにキャストして
.selection.createRange().text
で取得できるという所まで、わかっているのですが、その具体的方法が分りません。アドバイスお願いします。
引用返信 編集キー/
■39742 / inTopicNo.7)  Re[1]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ 魔界の仮面弁士 (1207回)-(2009/08/12(Wed) 20:38:12)
No39729 (RT さん) に返信
> クリックした部分のTDタグで囲まれたテキストデータを別ウィンドウで表示させるということです。

クリックされた部分のテキストを取得したいのであれば、こんな感じで如何でしょう。
(ここでは別ウィンドウではなく、ラベルに表示させています)


private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    webBrowser1.Document.Body.AttachEventHandler("onclick", delegate
    {
        this.label1.Text = "";
        this.label2.Text = "";
        HtmlElement tag = webBrowser1.Document.ActiveElement;  // event.srcElement の代用
        while (tag != null && tag.TagName != "TD") tag = tag.Parent;
        if(tag != null)
        {
            this.label1.Text = tag.InnerText;
            this.label2.Text = tag.OuterHtml;
        }
    });
}

引用返信 編集キー/
■39743 / inTopicNo.8)  Re[2]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ RT (27回)-(2009/08/12(Wed) 20:50:58)
No39742 (魔界の仮面弁士 さん) に返信
> ■No39729 (RT さん) に返信
>>クリックした部分のTDタグで囲まれたテキストデータを別ウィンドウで表示させるということです。
>
> クリックされた部分のテキストを取得したいのであれば、こんな感じで如何でしょう。
> (ここでは別ウィンドウではなく、ラベルに表示させています)
>
>
> private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
> {
> webBrowser1.Document.Body.AttachEventHandler("onclick", delegate
> {
> this.label1.Text = "";
> this.label2.Text = "";
> HtmlElement tag = webBrowser1.Document.ActiveElement; // event.srcElement の代用
> while (tag != null && tag.TagName != "TD") tag = tag.Parent;
> if(tag != null)
> {
> this.label1.Text = tag.InnerText;
> this.label2.Text = tag.OuterHtml;
> }
> });
> }


魔界の仮面弁士さん、下の文章の方のやり方は分りますでしょうか?

>今、使用変更を検討してまして、ウェブブラウザ上で、選択した部分のテキストを取得して、別ウィンドウに表示して、編集するということを考>えています。

>WebBrowserのdocumentをmshtml.HTMLDocumentにキャストして
>.selection.createRange().text
>で取得できるという所まで、わかっているのですが、その具体的方法が分りません。アドバイスお願いします。
引用返信 編集キー/
■39744 / inTopicNo.9)  Re[3]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ やじゅ (1214回)-(2009/08/12(Wed) 20:51:09)
やじゅ さんの Web サイト
No39741 (RT さん) に返信
>>ここはできたのかな?
>>ところで、その解析対象のページは、アプリケーションを使う人から見て、どの様な関係を持っているのでしょうか。
>
> アプリケーションを使う人が編集をします。
>

開くWindowsは、Windowsフォームですか? Webウィンドウですか?

Webウィンドウなら、<TD>タグにOnClick属性にJavaScriptを埋め込むなりすればをWebウィンドウは開くけど
パラメータも渡さないと、<TD>タグ内の情報も表示できない。

編集した後は、どうするのでしょうか?
引用返信 編集キー/
■39745 / inTopicNo.10)  Re[3]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ RT (28回)-(2009/08/12(Wed) 20:57:19)
>開くWindowsは、Windowsフォームですか? Webウィンドウですか?

ウインドウズフォームです。開く方法を探したのですが、見つかりません。教えてください。

>編集した後は、どうするのでしょうか?

実際のページにアップデートします。
引用返信 編集キー/
■39749 / inTopicNo.11)  Re[3]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ 魔界の仮面弁士 (1208回)-(2009/08/12(Wed) 21:13:34)
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");
}

引用返信 編集キー/
■39751 / inTopicNo.12)  Re[4]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ RT (29回)-(2009/08/12(Wed) 23:45:51)
No39749 (魔界の仮面弁士 さん) に返信
> 2009/08/12(Wed) 21:26:22 編集(投稿者)
>
>>魔界の仮面弁士さん、
> 名指しは止めましょう。私以外の人も回答してくださっていますよ。

すいませんでした、以後気を付けます。
>
>
> 編集結果を反映させるには、InnerText 等を直接書き換えるなど、幾つかの手法がありますが、
> いっそのこと、WebBrowser 上で直接編集させてしまっては駄目ですか?
>
> private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
> {
> webBrowser1.Document.Body.SetAttribute("contentEditable", "true");
> }

直接編集出来るとは、知りませんでした。非常に助かりました。

魔界の仮面弁士さん、やじゅさん、Jitta on the way さん、ありがとうございました。おかげで解決することが出来ました。


解決済み
引用返信 編集キー/
■39752 / inTopicNo.13)  Re[5]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ Jitta (586回)-(2009/08/12(Wed) 23:54:37)
No39751 (RT さん) に返信
> ■No39749 (魔界の仮面弁士 さん) に返信
>>2009/08/12(Wed) 21:26:22 編集(投稿者)
>>
> >>魔界の仮面弁士さん、
>>名指しは止めましょう。私以外の人も回答してくださっていますよ。
>
> すいませんでした、以後気を付けます。
>>
>>
>>編集結果を反映させるには、InnerText 等を直接書き換えるなど、幾つかの手法がありますが、
>>いっそのこと、WebBrowser 上で直接編集させてしまっては駄目ですか?
>>
>>private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
>>{
>> webBrowser1.Document.Body.SetAttribute("contentEditable", "true");
>>}
>
> 直接編集出来るとは、知りませんでした。非常に助かりました。
>
> 魔界の仮面弁士さん、やじゅさん、Jitta on the way さん、ありがとうございました。おかげで解決することが出来ました。
>
>
それって、「保存しておける」の?あるいは、次に見たときに、編集したものが表示されなくていいの?

編集させようとしている人が、オリジナルの HTML を作っているなら、オリジナルの HTML を作る、編集ツールを作る方がいいのではないですか?オリジナルの HTML を作って、かつ、できた HTML を編集するって、二度手間もいいところじゃないですか?

引用返信 編集キー/
■39754 / inTopicNo.14)  Re[6]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ RT (30回)-(2009/08/13(Thu) 01:21:15)
No39752 (Jitta さん) に返信
> ■No39751 (RT さん) に返信
>>■No39749 (魔界の仮面弁士 さん) に返信
> >>2009/08/12(Wed) 21:26:22 編集(投稿者)
> >>
>>>>魔界の仮面弁士さん、
> >>名指しは止めましょう。私以外の人も回答してくださっていますよ。
>>
>>すいませんでした、以後気を付けます。
> >>
> >>
> >>編集結果を反映させるには、InnerText 等を直接書き換えるなど、幾つかの手法がありますが、
> >>いっそのこと、WebBrowser 上で直接編集させてしまっては駄目ですか?
> >>
> >>private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
> >>{
> >> webBrowser1.Document.Body.SetAttribute("contentEditable", "true");
> >>}
>>
>>直接編集出来るとは、知りませんでした。非常に助かりました。
>>
>>魔界の仮面弁士さん、やじゅさん、Jitta on the way さん、ありがとうございました。おかげで解決することが出来ました。
>>
>>
> それって、「保存しておける」の?あるいは、次に見たときに、編集したものが表示されなくていいの?
>
> 編集させようとしている人が、オリジナルの HTML を作っているなら、オリジナルの HTML を作る、編集ツールを作る方がいいのではないですか?オリジナルの HTML を作って、かつ、できた HTML を編集するって、二度手間もいいところじゃないですか?
>

編集したデータは保存してアップデート出来るようにしたいと思います。HTMLコードをいじらなくても、簡単に編集出来るというのがこのツールのポイントです。

解決済み
引用返信 編集キー/
■39794 / inTopicNo.15)  Re[7]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ Jitta (590回)-(2009/08/13(Thu) 14:37:21)
No39754 (RT さん) に返信

> 編集したデータは保存してアップデート出来るようにしたいと思います。HTMLコードをいじらなくても、簡単に編集出来るというのがこのツールのポイントです。

だから、画面上には「〜の値:[入力領域]」と表示されており、「保存」ボタンを押したら、

<html>
...
<table><tr><td>[入力値]</td>...</tr></table>
</html>

というファイル"も"作るツールにすればいいんじゃないですか?
たとえば、エクセルの「名前を付けて保存」を選ぶと、HTML として出力できます。そういうツールを作る方がいいのではないですか?
少なくとも、今問題にしている HTML を解析して云々の部分は、手間を省けますよね?

それとも、将来的にデータが増えたときにアプリケーションも改修しなければならないから、ということでしょうか?
だったら、現行の HTML は、誰が新しい形に編集するのでしょう?

あるいは、Wiki を導入するというのも、一つの手です。
引用返信 編集キー/
■39803 / inTopicNo.16)  Re[8]: ウェブブラウザで表示したデータをクリックして、編集
□投稿者/ RT (32回)-(2009/08/13(Thu) 18:51:38)
No39794 (Jitta さん) に返信
> ■No39754 (RT さん) に返信
>
>>編集したデータは保存してアップデート出来るようにしたいと思います。HTMLコードをいじらなくても、簡単に編集出来るというのがこのツールのポイントです。
>
> だから、画面上には「〜の値:[入力領域]」と表示されており、「保存」ボタンを押したら、
>
> <html>
> ...
> <table><tr><td>[入力値]</td>...</tr></table>
> </html>
>
> というファイル"も"作るツールにすればいいんじゃないですか?
> たとえば、エクセルの「名前を付けて保存」を選ぶと、HTML として出力できます。そういうツールを作る方がいいのではないですか?
> 少なくとも、今問題にしている HTML を解析して云々の部分は、手間を省けますよね?
>
> それとも、将来的にデータが増えたときにアプリケーションも改修しなければならないから、ということでしょうか?
> だったら、現行の HTML は、誰が新しい形に編集するのでしょう?
>
> あるいは、Wiki を導入するというのも、一つの手です。

Jittaさん、アドバイスありがとうございます、参考にさせていただきます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -