- - PR -
ユーザーコントロールの継承
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-05-11 14:23
ASP.NETでユーザーコントロールを作成し、さらにそれを別のユーザーコントロールで継承させようと思いましたがうまくいきません。
Inherits 継承元のユーザーコントロール をではうまく継承できないのです。いろいろ調べてみましたが、めぼしい資料もありません。 どなたか相談に乗っていただけないでしょうか。 | ||||
|
投稿日時: 2004-05-11 14:55
ツッコミどころはいろいろあるのですが、一つだけ。 1.やりたいこと 2.やったこと 3.具体的なその結果 を最初に書くと、具体的な回答が得やすいです。 たとえば「レジストリへの保存方法」なんかは、具体的な質問事項がわからず、紆余曲折の末、解決まで5日かかっています。 たとえば「子フォームから別の子フォームを開く」なんかは、2つめの投稿で具体的なことが書かれているのでその日の内に解決しています。 ご提示の情報だけでは色々な解釈ができるので、回答しにくいし、まして「相談に乗っていただけないでしょうか」となると、いつまでつきあわなければならないのかという不安から、レスも付けにくいです。 一応、 http://quick-tips.hp.infoseek.co.jp/pg/tip.html こんなものをまとめていますので、参考にして、具体的に示してください。 | ||||
|
投稿日時: 2004-05-11 14:57
私がのりましょう。
ではまず、どのようにうまくいかなかったのか書いていただけますか。 1.どういうコードを書いたら(要点の部分だけを抜き出しあるいは加工して) 2.どうなると思ったが 3.実際はどうなった(コンパイルが通らない、例外が発生する等起きた現象を細かく) を教えてください。 | ||||
|
投稿日時: 2004-05-11 15:49
内容薄で申し訳ありませんでした。
今回の開発はASP.NETでやっておりますが、ユーザーコントロールを作成することにあたって 調べていました。 一郎さんからの要点をモデルにするところ、以下の要点を上げます。 要点:1 ソース --------------1つめのユーザーコントロール(継承元)-------------- Public Class UC_1 Inherits System.Web.UI.UserControl コードはありません。 end class --------------2つめのユーザーコントロール(継承先)-------------- Public Class UC_2 Inherits UC_1 ← これで1つ目のユーザーコントロールを継承できないのでしょうか? 同じくコードはありません End Class 要点2:やりたかったが 1つめのユーザーコントロールのデザインでサーバーコントロールのテキストとボタンを張りました。 これを2つめのユーザーコントロールで継承すれば、1つめを基準として拡張したユーザーコントロールが作成できると思いました。 要点3:実際はどうなった 実際は2つめのユーザーコントロールのデザインに何も表示されず、二つ目のユーザーコントロールを貼り付けたWEBページは何も表示されない状態になりました。 よろしくお願いします。 | ||||
|
投稿日時: 2004-05-11 16:30
System.Web.UI.UserControlかぁ。。。これ、「見た目」を決定するファイルと、「動作」を決定するファイルが分かれています。それで、「動作」の方だけ“継承”しているので、何も表示されないのです。
.ascxファイルがありますよね。それをコピーして、<%@ Control・・・の行を書き換えれば何とかなるかもしれないし、コードをこっちに埋め込んでしまえば何とかなるかもしれませんが、「見た目」、つまりHTMLに解釈されるところを“継承”するすべがないように思います。あるいは、そのユーザコントロールを含むページを、ユーザコントロールに変換することで、擬似的に“継承”するか。。。 | ||||
|
投稿日時: 2004-05-11 17:45
ご返答ありがとうございます。
ほぼ今日一日調べております。 Jittaさんどうもありがとうございます。大変感謝しております。 <%@ Control・・・の行を書き代えてみたのですがやはり表示はされませんでした。 やはり、そのユーザコントロールを含むページを、ユーザコントロールに変換することで、擬似的に“継承”するしかないんでしょうか。 | ||||
|
投稿日時: 2004-05-11 18:01
Pageクラスでもそうだと思いますが、ユーザーコントロールはコンパイルされてdllの一部になる部分(.ascx.vb)とIISで動的に解析される部分(.ascx)に分かれています。dllの一部になっている.NETとしてのクラスは継承できます。
しかし、IISで動的に解析される部分は継承できません。 見た目は継承できませんが、「動作」だけなら継承できます。 見た目は継承先で定義するしかありません。 ちょっと実験してみました。
必要な部分だけ抜粋してあります。 一応思った通りには動きました。 ボタンを押すとTextBox1には"押した押した2"と表示されました。 まぁ・・・まねしない方が良いかも。 [ メッセージ編集済み 編集者: 一郎 編集日時 2004-05-11 18:12 ] | ||||
|
投稿日時: 2004-05-11 18:35
一郎さん、大変ありがとうございました。できました。
わたし達にとって、とてもわかりやすく教えていただき感謝しております。 今日はじめての@ITデビューで、こんなにも早くご返事をいただき、また問題点においても 解決の糸口を与えていただいて、とても感激しております。 これからもこちらを利用するにあたって、私自身も誰かの役に立てればと考えております。 今回協力してくださった、Jittaさん、一郎さん、ありがとうございました。 |