- PR -

クラスの継承で特定のイベントを非公開にしたいんです

投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2005-12-19 11:47
引用:


lalupin4さんの書き込み (2005-12-18 22:05) より:

 VB.NETはようわからんけど、こうかな:
Handles Me.CellEndEdit

Handles MyBase.CellEndEdit

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vakeyMyBase.asp



ありがとうございました。できました。

引用:


lalupin4さんの書き込み (2005-12-18 22:13) より:

ていうかDataGridViewて2005か。いいなあ…。



バタ2なので、うらやましがらなくても大丈夫です。

引用:


lalupin4さんの書き込み (2005-12-18 22:15) より:
 おお。20件で「常連さん」か。気づかんかった。



僕もいつのまにかベテランにされてしまいました。

引用:


todoさんの書き込み (2005-12-19 10:31) より:
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=17197&forum=7&start=16



ありがとうございました。
結局ラッピングして力技を使わないと駄目ってことなんですね。

引用:


渋木宏明(ひどり)さんの書き込み (2005-12-19 10:44) より:

VB.NET でどう書くか知りませんが、new で上書きしても駄目でしたっけ?>継承元の public メンバを隠蔽



ひどりさん、お久しぶりです。
nifty の windev 会議室で、いろいろと教えていただいた「河童の川流れ」です。
その節は、お世話になりました。

ところで、new で上書きの意味が理解できませんでした。
メソッドやイベントを new するのですか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-19 12:05
引用:

渋木宏明(ひどり)さんの書き込み (2005-12-19 10:44) より:

VB.NET でどう書くか知りませんが、new で上書きしても駄目でしたっけ?>継承元の public メンバを隠蔽


「上書き」という表現は少し違和感がありますが、VB ですと Shadows ですね。
隠蔽化すると、今度は基底クラスのメンバが参照されるだけなのでダメだと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2005-12-19 14:37
引用:


じゃんぬねっとさんの書き込み (2005-12-19 12:05) より:

引用:


渋木宏明(ひどり)さんの書き込み (2005-12-19 10:44) より:

VB.NET でどう書くか知りませんが、new で上書きしても駄目でしたっけ?>継承元の public メンバを隠蔽


「上書き」という表現は少し違和感がありますが、VB ですと Shadows ですね。
隠蔽化すると、今度は基底クラスのメンバが参照されるだけなのでダメだと思います。



コード:

Private Shadows Event CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)



上記で確認したのですが見えてしまいました。
特定のメソッドやイベントなどを隠すことは諦めたいと思います。
ありがとうございました。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-12-19 18:23
引用:

「上書き」という表現は少し違和感がありますが、VB ですと Shadows ですね。
隠蔽化すると、今度は基底クラスのメンバが参照されるだけなのでダメだと思います。



残念。。。

てことは、継承ではなく内包するのが「.NET らしい」実装ってことになっちゃいますね。

# mix-in を助ける文法があればなぁ。

todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-12-19 18:56
コード:

[Obsolete("使用禁止", true)]
Overrides Public Event CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)



で使えなくするとか。
# 使うとコンパイルエラーになります


[ メッセージ編集済み 編集者: todo 編集日時 2005-12-19 18:57 ]
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-19 19:05
基本クラスで可能であったものが、派生クラスで不可能になるんで、継承を使う場面じゃあないですね。とか言ってみたり・・・。
(new とか Shadows を使う事あんまりないなぁ。いい例があればお教えください)
_________________
囚人のジレンマな日々
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-12-19 19:14
引用:

(new とか Shadows を使う事あんまりないなぁ。いい例があればお教えください)



一番多いのは ToString() じゃないすかね?

# 「private にしたいから」という使い方はたまたま思いついたから書いてみただけです (^^;

囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-19 19:27
引用:

一番多いのは ToString() じゃないすかね?


え!? virtual なのにですか?
ん〜、どういう用途かちょっと思いつかないです。
_________________
囚人のジレンマな日々

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