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

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

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

Re[3]: スタートページ更新情報のようなものを作りたい。


(過去ログ 42 を表示中)

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

■21867 / inTopicNo.1)  スタートページ更新情報のようなものを作りたい。
  
□投稿者/ こげパン (1回)-(2008/07/11(Fri) 10:35:43)

分類:[C#] 

こんにちは。こげパンと申します。

早速ですが、VisualStudioを起動したときに表示されるスタートページにある、
更新情報一覧のようなものを作成したいと考えているのですが、
どのようなコントロールを使用するのがよいか、お知恵を拝借させてください。

具体的な要件としては、
・1つの情報は、タイトルと2,3行の本文から構成される。
・この情報を一覧表示させたい。
・情報をクリックすることができる(⇒別画面に飛ぶため)
・文字に装飾を施したい。(とくにタイトル部分は太文字)

イメージとしては、RichTextBoxをリスト化(コンテナ化?)するようなことができたら
もっとも良いのかななどと考えたりしましたが、
いろいろなアイデアなども含めて、お教えいただきたいと思います。

基本は、出費をせずに作成したいと思っていますが、
サードパーティ製品でも情報があれば、お教えいただきたいです。
どうかよろしくお願いいたします。

○環境
VS.NET 2008 C#
.NET Framework 3.5
XP Pro SP3

引用返信 編集キー/
■21868 / inTopicNo.2)  Re[1]: スタートページ更新情報のようなものを作りたい。
□投稿者/ シャノン (533回)-(2008/07/11(Fri) 10:47:01)
No21867 (こげパン さん) に返信
> こんにちは。こげパンと申します。
>
> 早速ですが、VisualStudioを起動したときに表示されるスタートページにある、
> 更新情報一覧のようなものを作成したいと考えているのですが、
> どのようなコントロールを使用するのがよいか、お知恵を拝借させてください。
>
> 具体的な要件としては、
> ・1つの情報は、タイトルと2,3行の本文から構成される。
> ・この情報を一覧表示させたい。
> ・情報をクリックすることができる(⇒別画面に飛ぶため)
> ・文字に装飾を施したい。(とくにタイトル部分は太文字)

RSS を XSLT で XHTML に変換して、CSS で装飾し、WebBrowser に表示する…がお手軽かなぁ。
引用返信 編集キー/
■21871 / inTopicNo.3)  Re[1]: スタートページ更新情報のようなものを作りたい。
□投稿者/ 渋木宏明(ひどり) (817回)-(2008/07/11(Fri) 10:58:02)
渋木宏明(ひどり) さんの Web サイト
> 早速ですが、VisualStudioを起動したときに表示されるスタートページにある、
> 更新情報一覧のようなものを作成したいと考えているのですが、
> どのようなコントロールを使用するのがよいか、お知恵を拝借させてください。

モロに WebBrowser コントロールでやってるように見えますケド>VS

引用返信 編集キー/
■21900 / inTopicNo.4)  Re[1]: スタートページ更新情報のようなものを作りたい。
□投稿者/ こげパン (3回)-(2008/07/11(Fri) 16:17:05)
2008/07/11(Fri) 16:26:42 編集(投稿者)

シャノンさん
> RSS を XSLT で XHTML に変換して、CSS で装飾し、WebBrowser に表示する…がお手軽かなぁ。

渋木宏明(ひどり)さん
> モロに WebBrowser コントロールでやってるように見えますケド>VS

早速の回答ありがとうございました。
すぐに参考にさせていただき、表示についてはwebBrowserコントロールで、
想定どおりのものができました。ありがとうございました。

ただ、ここでひとつ壁にぶつかってしまいました。
もう少し、ご教授いただけますと助かります。
webBrowserコントロールは、Clickイベントを取得することが難しく、悩んでおります。

具体的には、webBrowserコントロール上に表示されている情報をクリックすると、
ブラウザとしてのページ遷移ではなく、クリックした情報の詳細を表示すべく
windowsフォームを呼び出したいのです。
このため、クリックイベントを拾う必要があります。

ただ、webBrowserコントロールには、Clickイベントは実装されておらず、
独自でイベントを拾い、かつHTML上で何がクリックされたのかを
判定させる必要があります。


イベントの実装の仕様を、あまり理解していないことが
そもそも問題なのかもしれませんが、
もしお分かりになる方がいらっしゃいましたら、
ご教授お願いできますとたすかります。

あるいは「まずここを把握してからにしろ」というお叱りでもかまいません。
なにか、ヒントだけでもいただけると幸いです。

どうぞよろしくお願いいたします。

引用返信 編集キー/
■21905 / inTopicNo.5)  Re[2]: スタートページ更新情報のようなものを作りたい。
□投稿者/ 渋木宏明(ひどり) (818回)-(2008/07/11(Fri) 16:31:27)
渋木宏明(ひどり) さんの Web サイト
> webBrowserコントロールは、Clickイベントを取得することが難しく、悩んでおります。

WebBroweser コントロールの Click イベントを捕まえてもすぐにドン詰まります。

WebBrowser コントロールとコンテナアプリケーションとのコミュニケーションには、WebBrowser.ObjectForScripting プロパティを使用するのが定石です。

引用返信 編集キー/
■21917 / inTopicNo.6)  Re[3]: スタートページ更新情報のようなものを作りたい。
□投稿者/ こげパン (4回)-(2008/07/11(Fri) 19:17:48)
2008/07/11(Fri) 19:22:00 編集(投稿者)

No21905 (渋木宏明(ひどり) さん) に返信
>>webBrowserコントロールは、Clickイベントを取得することが難しく、悩んでおります。
>
> WebBroweser コントロールの Click イベントを捕まえてもすぐにドン詰まります。
> WebBrowser コントロールとコンテナアプリケーションとのコミュニケーションには、WebBrowser.ObjectForScripting プロパティを使用するのが定石です。

迅速なご回答ありがとうございます。
作業時間が貴重なので、とてもたすかります。

ObjectForScripting プロパティで調べてみたところ、MSDNにそのままのサンプルが掲載されておりました。これを使うことで、見事要件を実現できました。

大変助かりました。
どうもありがとうございました。


以下に、動いたサンプルを載せておきます。(ほとんどMSDNそのままですが・・・)
クラスファイルひとつ用意して、中のソース全て上書きしてそのまま実行すると動きます。

#確認動作環境:WinXP Pro SP3, VS2008 Dev C#
#あらかじめ作成される Program.cs と Form1は削除します。


----- サンプルコード -----
using System;
using System.Windows.Forms;
using System.Security.Permissions;

[PermissionSet(SecurityAction.Demand,Name="FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public class Form1:Form
{
private WebBrowser webBrowser1 = new WebBrowser();

[STAThread]
public static void Main() {
Application.EnableVisualStyles();
Application.Run(new Form1());
}

public Form1() {
webBrowser1.Dock = DockStyle.Fill;
Controls.Add(webBrowser1);
Load += new EventHandler(Form1_Load);
}

private void Form1_Load(object sender,EventArgs e) {
webBrowser1.AllowWebBrowserDrop = false;
webBrowser1.IsWebBrowserContextMenuEnabled = false;
webBrowser1.WebBrowserShortcutsEnabled = false;
webBrowser1.ObjectForScripting = this;

webBrowser1.DocumentText =
"<html><head></head><body>" +
"<br>" +
"<center>" +
"<button onclick=\"window.external.ButtonTest('ボタンのクリックも')\">ボタンのクリック</button><br><br>" +
"<div onclick=\"window.external.DivTest('DIVタグでも')\" style=\"border: solid 1px #FF0000 \">DIVタグのクリック</div>" +
"</center>" +
"</body></html>";
}

public void ButtonTest(String message) {
MessageBox.Show(message + "イベント取れました!", "client code");
}

public void DivTest(string message) {
MessageBox.Show(message + "うまくいきました!", "client code");
}
}
----- サンプルコード ここまで -----

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -