- PR -

WebアプリケーションにWindows Formsのコントロールを表示する方法

投稿者投稿内容
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2004-03-29 15:46
いつも勉強させていただいております。

以前、この件名でここでも議論されていたことなのですが、
参考として勧められていたMSDNは既に無く、自分の悩んで
いる所がもっと低レベルであることから、ご質問させてい
ただきました。

http://nadia.kabe.to/test/WinFormControlOnHTML/MyTextBox.html

のサイトでhtmlファイルのオブジェクトタグの中に
記述されている
classid="MyControls01.dll#MyTextBox"

のMyControls01.dllのようなWebで使用するdllの作成
の方法を教えてほしいのですが、具体的にVS.NETでは
どのように作成するのでしょうか?
言語はC#を使用しております。

非常に素人同然の質問で申し訳ありませんが、よろしく
ご指導お願いします。

ターキッシュ
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-29 16:10
 普通に、マネージドなコントロールライブラリプロジェクト(コントロールが難しいなら、クラスライブラリ)を作成するだけです。

・・・って、そういうことではなく?
聖人@SKB
ベテラン
会議室デビュー日: 2003/03/26
投稿数: 58
お住まい・勤務地: 横浜(MM21)勤務の筈だがいつも顧客先常駐
投稿日時: 2004-03-29 16:21
私はこんな感じで作りました。
記憶を辿ってササっと書いているので、検証はご自身でなさって下さい。

1.Windowsアプリケーションにてユーザコントロールを作成。
2.コンパイル
3.ツールボックスに作成したユーザコントロールを追加。
4.Webアプリケーションにて画面を作成する際に先に登録したWindowsユーザコントロールを
ドラッグ&ドロップ。

※質問と回答が食い違っている場合、無視して下さい。
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2004-03-29 16:55
Jitta様、聖人@SKB様ご返答ありがとうございます。

Webアプリケーションの作成で
参照設定にSystem.Windows.Formsを追加し、
空白のクラスを追加してそこで、

下記のようなラベルを作成してみました。

using System;
using System.Threading;
using System.Timers;

namespace Label_Test
{
public class Label_T:System.Windows.Forms.Label
{
public int i=0;
public Label_T()
{
CreatTimer();
}

public void CreatTimer()
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimer);
aTimer.Interval = 5000;
aTimer.Enabled = true;
}

public void OnTimer(Object source, ElapsedEventArgs e)
{
i++;
this.Text=i.ToString();
}
}
}

はっきり言って動いてないので、このコードがあってるかどうかも
不明ですが、.NET FrameWorkが入ったマシンで五秒ごとに数を増
やしていく描画処理をやろうとしているだけなんですが、やはりWeb
アプリケーションでは無理なのでしょうか?

聖人@SKB様のおっしゃる通り、Windowsアプリケーションにて
ユーザコントロールを作成してやってみます。

それから、Jitta様

>普通に、マネージドなコントロールライブラリプロジェクト
>(コントロールが難しいなら、クラスライブラリ)を作成するだけです。

とはVS.NETでは具体的にどのようなプロジェクトから始めるの
でしょうか?
誠に勉強不足で申し訳ありません。

ターキッシュ


ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2004-03-29 19:07
聖人@SKB様

>1.Windowsアプリケーションにてユーザコントロールを作成。
>2.コンパイル
>3.ツールボックスに作成したユーザコントロールを追加。
>4.Webアプリケーションにて画面を作成する際に先に登録したWindowsユーザコントロー
>ルをドラッグ&ドロップ。

で、3まではうまくいったのですが、4で登録はされているよう
なのですが、ツールボックスの中が半透明化していて選択でき
ないような状態になってしまいます。

何度も申し訳ありませんが、ご指導よろしくお願いします。

ターキッシュ
聖人@SKB
ベテラン
会議室デビュー日: 2003/03/26
投稿数: 58
お住まい・勤務地: 横浜(MM21)勤務の筈だがいつも顧客先常駐
投稿日時: 2004-03-29 19:31
すみません。間違っていました。
記憶を辿って、「こうだったかなぁ」というので記述してしまいました。
申し訳ありません。
作成したコントロールを
<object>タグのclassidに xxxxx.dll#名前区間.クラス名
という形式で宣言して表示されませんか?

ちょっと試してみます。
聖人@SKB
ベテラン
会議室デビュー日: 2003/03/26
投稿数: 58
お住まい・勤務地: 横浜(MM21)勤務の筈だがいつも顧客先常駐
投稿日時: 2004-03-29 20:07
1.Windowsコントロールライブラリのプロジェクトを作成
2.Windowsコントロールライブラリプロジェクトをコンパイル
3.ASP.NET Webアプリケーションプロジェクトを作成
4.ASP.NET Webアプリケーションに既存のプロジェクトとして
Windowsコントロールライブラリのプロジェクトを追加
5.Webページに<object>タグでWindowsコントロールライブラリを指定

これで表示できました。
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2004-03-30 11:25
聖人@SKB様何度も申し訳ありません。

オブジェクトタグに
<OBJECT id="sls_l" style="WIDTH: 200px; HEIGHT: 50px" classid="Label_Test.dll#Test_Label"></OBJECT>

と指定しましたが、動きませんでした。
画像読み込み失敗時に表示されるような状態になっています。
何か上の記述で問題ありますでしょうか?

誠に申し訳ありませんが、よろしくご指導お願いします。

ターキッシュ

スキルアップ/キャリアアップ(JOB@IT)