- PR -

継承後のソース

1
投稿者投稿内容
ぐんたま
会議室デビュー日: 2005/03/15
投稿数: 3
投稿日時: 2005-03-15 15:56
 お世話になります。新参者なので何か間違いがあったらバンバン指摘してください。

 現在、VS.NETにて開発を行っているのですが、継承を行い独自のコントロールを作成後、別画面からそのコントロールを利用すると、継承内で書かれているソースが継承先のソースにまで記述されてしまいます。

 記述されるタイミングは、ビルドorリビルドorデバッグによる画面表示のいずれかのようです。

 継承先にソースが記述されてしまうと、継承元の記述を変更しても継承先への反映が手間になってしまうため、困っています。VS.NETの設定の問題かと思い、設定を漁ってはいるのですが・・・。

 設定方法ご存知の方、もしくは対応方法案をお持ちの方など御座いましたら、何卒よろしくお願いします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-03-15 17:14
ちょっと状況が見えませんが・・・

>継承を行い独自のコントロールを作成後、別画面からそのコントロールを利用すると、継承内で書かれているソースが継承先のソースにまで記述されてしまいます。
「別画面から」の"別"というのはどういうことでしょうか。
継承で、例えばTextBoxからHyperTextBoxを作ったとしますよね。TextBoxは画面ではないわけですが、HyperTextBoxを貼り付けた画面Aと、それを参照している画面Bがあるということですか?
そして"継承内"というのはどこですか?TextBoxですか、HyperTextBoxですか、画面Aですか?

他の方が、この書き込みを見て再現できるかどうかを考えながら文章を作ると良いのではないでしょうか。
手順を書いてみるとか。
ぐんたま
会議室デビュー日: 2005/03/15
投稿数: 3
投稿日時: 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.変更不可
 とソースに記述されてしまいます。

  この現象に関して、何かご存知の方見えましたらよろしくお願いします。
Nilpo
会議室デビュー日: 2005/01/06
投稿数: 5
投稿日時: 2005-03-16 09:04
DefaultValueAttribute クラス
または ShouldSerialize{PropertyName} メソッドで解決すると思います。
ぐんたま
会議室デビュー日: 2005/03/15
投稿数: 3
投稿日時: 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

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