- - PR -
継承後のソース
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-15 15:56
お世話になります。新参者なので何か間違いがあったらバンバン指摘してください。
現在、VS.NETにて開発を行っているのですが、継承を行い独自のコントロールを作成後、別画面からそのコントロールを利用すると、継承内で書かれているソースが継承先のソースにまで記述されてしまいます。 記述されるタイミングは、ビルドorリビルドorデバッグによる画面表示のいずれかのようです。 継承先にソースが記述されてしまうと、継承元の記述を変更しても継承先への反映が手間になってしまうため、困っています。VS.NETの設定の問題かと思い、設定を漁ってはいるのですが・・・。 設定方法ご存知の方、もしくは対応方法案をお持ちの方など御座いましたら、何卒よろしくお願いします。 |
|
投稿日時: 2005-03-15 17:14
ちょっと状況が見えませんが・・・
>継承を行い独自のコントロールを作成後、別画面からそのコントロールを利用すると、継承内で書かれているソースが継承先のソースにまで記述されてしまいます。 「別画面から」の"別"というのはどういうことでしょうか。 継承で、例えばTextBoxからHyperTextBoxを作ったとしますよね。TextBoxは画面ではないわけですが、HyperTextBoxを貼り付けた画面Aと、それを参照している画面Bがあるということですか? そして"継承内"というのはどこですか?TextBoxですか、HyperTextBoxですか、画面Aですか? 他の方が、この書き込みを見て再現できるかどうかを考えながら文章を作ると良いのではないでしょうか。 手順を書いてみるとか。 |
|
投稿日時: 2005-03-15 20:54
ご返事ありがとう御座います、説明不足でしたm−−m。
開発環境 OS:WindowsXP SP2 開発ツール:VisualStudio .Net 2003 @「TextBox」をInheritsにて継承し、 1.文字色は青。 2.フォントは9.5em。 の特徴をもたせた「TextBoxA」クラスを作成したとします。 A次にフォーム「MainForm」に対し、 「TextBoxA」をNewし 1.変更不可 の特徴をもたせた「txtCodeArea」オブジェクトを作成したとします。 この後、作成したオブジェクトを画面から位置の移動を行ったりすると、 「TextBoxA」クラスでうたっていた特徴が、「MainForm」の 「txtCodeArea」オブジェクトでまで改めてうたわれ、 1.文字色は青。 2.フォントは9.5em。 3.変更不可 とソースに記述されてしまいます。 この現象に関して、何かご存知の方見えましたらよろしくお願いします。 |
|
投稿日時: 2005-03-16 09:04
DefaultValueAttribute クラス
または ShouldSerialize{PropertyName} メソッドで解決すると思います。 |
|
投稿日時: 2005-03-17 10:00
Nilpoさんお返事ありがとう御座います。
さっそく試させて頂きました。 DefaultValueAttributeで解決できそうです。 まだtabstopや、ReadOnlyなどに対して正常に設定することが 出来ませんが、Forecolorなどは正常に設定できました。 以下はこのスレッドを見にこられた方のため、書き換えたソースを出しておきます。 参考にするにはしょぼしょぼですが、 ----------------------------------------------------------------------------- - 元 - Imports System.ComponentModel Imports System.Drawing Public Class txtCodeArea Inherits System.Windows.Forms.TextBox Public Sub New() Me.ForeColor= ForeColor.Color.Blue End Sub End Class - 現 - Imports System.ComponentModel Imports System.Drawing Public Class txtCodeArea Inherits System.Windows.Forms.TextBox Private _ForeColor As Color = Color.Blue Public Overrides Property Forecolor() As Color Get Return _ForeColor End Get Set(ByVal Value As Color) _ForeColor = Value End Set End Property End Class ----------------------------------------------------------------------------- |
1