- - PR -
クラスの継承で特定のイベントを非公開にしたいんです
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-12-18 17:27
最近、覚えたての「クラスの継承」をさるのように使いまくっています。
そして、先ほど、基本クラスのイベントの中で、公開したくないものが出てきました。 公開させたくないイベント(場合によってはプロパティやメソッドなど)があった時、これを故意に見せないようにすることはできるんでしょうか? | ||||||||||||||||
|
投稿日時: 2005-12-18 17:40
業務にも因りますが、ほどほどにしましょう。(^^;) 単一継承とはいえ、継承しなければならない場面は意外と少ないものです。 (大きな Framework はこの限りでないです)
見せなくするだけなら private です。 イベント ハンドラのことを仰っているのであれば、おかしいです。 基本クラスのイベントは定義であって、実装は派生クラス側になりますよね。 # そういう意味ではないですか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2005-12-18 18:47
じゃんぬねっとさん、いつもありがとうございます。
日曜日なのにお仕事されてるんですね。大変です。
先ほど、試しに private で書いてみたのですが、何故か見えていました。 根本的に、僕は何か勘違いしているのだと思われます。
すみません。この辺りも怪しいのです。 多分、イベントハンドラの受け取り方も間違っている気がします。 以下のクラスの場合、表コントロールクラスを使ったWindows のフォームは、System.Windows.Forms.DataGridView と同じプロパティ・メソッドが使えて、同じイベントも捕まえられます(よね?)←この辺りが、うろたえている現れ
ここでやりたいこととして、 1.「値が変更された」という名前のイベントを作りたい。 2.「値が変更された」イベントは、基本クラスの「CellEndEdit イベント」を貰って、処理した結果で発行させたい。 3.表コントロールを使っているフォームには、直接 CellEndEdit イベントを使われたくないので見せたくない。
こんな風にしてみたのです。 しかし、表コントロールを使っているフォームからは CellEndEdit イベントは捕まえられてしまうし、CellEndEditイベントは表コントロールの中で捕まえられません。 | ||||||||||||||||
|
投稿日時: 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 | ||||||||||||||||
|
投稿日時: 2005-12-18 22:13
こっちは知らん。パス。 ていうかDataGridViewて2005か。いいなあ…。 | ||||||||||||||||
|
投稿日時: 2005-12-18 22:15
おお。20件で「常連さん」か。気づかんかった。[ メッセージ編集済み 編集者: lalupin4 編集日時 2005-12-18 22:17 ] | ||||||||||||||||
|
投稿日時: 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 メンバを隠蔽 # 基底クラスにキャストされたら見えちゃいますが、それはそんなもんつーことで。 |
1|2|3|4
次のページへ»