none
Webページ内にWindowsフォーム(ユーザーコントロール)を埋め込みたい RRS feed

  • 質問

  • ASP.NET(C#2005)で開発しています。

    IEのページ内にWindowsフォームアプリケーションで作成した
    ユーザーコントロールを埋め込んで表示したいと思っています。

    以前実現しているところを知人に見せてもらったのですが、
    記録していなかったため、再現できずにおります。

    dllのファイルはクライアント端末にレジストリ登録していて、
    WebのHTMLにはJavaScriptで以下のように書かれていました。

    ----------------------------------------------------------------------
    <SCRIPT LANGUAGE="JavaScript" CHARSET="UTF-8">
    <!--
    WriteToDocument(
    '<OBJECT id="UserControl1" classid="clsid:fc57aff3-37bb-4666-a450-50048c4e9aa5" style="margin:0,0,0,0; POSITION:absolute; top:0; left:0; PADDING:0,0,0,0;">',
    '</OBJECT>'
    );
    -->
    </SCRIPT>
    ----------------------------------------------------------------------

    これ(↑)はコピーしたものなので、間違っていないと思っています。
    (idとclsidは変えましたが。。。)
    またこれは<BODY>タグの中に書かれていました。

    idにユーザーコントロール名、cisidにユーザーコントロールのGuidを設定するのだと
    聞いた記憶があります。

    ただ私の記録を頼りにプログラムしてみましたが、
    どうしてもIEの中にユーザーコントロールが表示されませんでした。
    (しっかり理解していないので、当然なのですが。。。)

    どのような作業が足りないのかを、
    教えて頂けないでしょうか?
    参考になるページがありましたら、紹介して頂いても構いません。

    ぜひよろしくお願いいたします。


    UserControl1

    ----------------------------------------------------------------------
        [Guid("fc57aff3-37bb-4666-a450-50048c4e9aa5")]
        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show("2");
            }
        }
    ----------------------------------------------------------------------

    2009年7月7日 6:41

回答

すべての返信

  • 次の記事はいかがでしょうか。

     IEで.NET Windowsフォームコントロールをホストする - japan.internet.com デベロッパー
     http://japan.internet.com/developer/20051220/25.html

    クライアントにも .NET Framework がインストールされている必要がありますので、お忘れなく。
    • 回答としてマーク リオ 2009年7月7日 11:18
    2009年7月7日 7:36
  • totojoさん

    ご回答ありがとうございます。
    とても参考になりました。
    無事ユーザーコントロールをブラウザ内に埋め込むことができました。

    開発環境で検証したので、少し理解が間違っているのかもしれませんが、
    ユーザーコントロールのdllはクライアントのレジストリに登録する必要はないのですね。
    サーバーにだけあって、ページがロードされるときに
    ダウンロードされているのですよね?

    これであれば、ユーザーコントロールにバグがあっても、
    サーバー側だけを直せば良いので、プログラムの配布を考えると便利ですね。

    とても勉強になりました。
    ありがとうございました。

    2009年7月7日 11:18