- ベストアンサー
VB.net Webアプリケーションでのユーザーコントロール(DLL)の作り方
VB.netでWebアプリケーションでのユーザーコントロール(DLL)を試しに作ったのですが(テキストボックスを張り付けただけのもの)、WebアプリケーションにそのDLLを張り付けてもテキストボックスがでてきません。なぜでしょうか? DLL側のソース(一部) Inherits System.Web.UI.UserControl'ユーザーコントロールと定義 Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox'テキストボックスはりつけ
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
override protected void OnInit(EventArgs e) { Control c = this.LoadControl("../WebApplication1/WebUserControl1.ascx"); Label1.Controls.Add(c); } 仮想パス '*/WebApplication1/WebUserControl1.ascx' がほかのアプリケーションに割り当てられていますが、これは許可されていません。 とエラーが出てやはり無理ですね。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=11522
その他の回答 (4)
- todo36
- ベストアンサー率58% (728/1234)
> ユーザーコントロールを動的に貼り付け 同一プロジェクトなら LoadControl("hoge.ascx") でいいけど、別プロジェクトではやったことない。
補足
ありがとうございます。 LoadControl("hoge.ascx") だけだと、表示できませんでした。なにかプロパティの設定とかいるのでしょうか?
- todo36
- ベストアンサー率58% (728/1234)
>Inherits System.Web.UI.WebControls.TextBox >とするとかろうじてテキストボックスは表示されるのです。 それはカスタムコントロールです。 http://www.microsoft.com/japan/msdn/library/ja/vbcon/html/vbconwebusercontrolsvscustomwebcontrols.asp より Web ユーザー コントロール Visual Studio のツールボックスに追加できない。 ということでカスタムコントロールを作るしか手はないと思う。
補足
別プロジェクトのユーザーコントロールは使えないということでしょか? DLL(ユーザーコントロール)を参照設定して、ユーザーコントロールを動的に貼り付けできないのでしょうか? object.Controls.Add(dllTxt) みたいな感じで。
- todo36
- ベストアンサー率58% (728/1234)
考えてみたら、 別プロジェクトのDLL参照しても、ascxファイルは参照 していない。 外部のユーザーコントロールは使えないのは当然でしょう。
補足
ありがとうございます。使える場合もあります。 Inherits System.Web.UI.UserControl ではなく Inherits System.Web.UI.WebControls.TextBox とするとかろうじてテキストボックスは表示されるのです。UserControlにTextBoxを張り付けても、TextBoxが表示されないんです。こまりました。
- todo36
- ベストアンサー率58% (728/1234)
> WebアプリケーションにそのDLLを張り付けても DLLを貼り付けるのではなくて、ユーザーコントロールを貼り付けるのでしょう。 でも、別プロジェクトのDLLをツールボックスに登録してもユーザーコントロールは 灰色なので貼り付けできない。 もちろん、カスタムコントロールならOKです。 もしかして、外部のユーザーコントロールは使えないというオチかも。
補足
ありがとうございます。一旦しめます。