- - PR -
コントロールのデフォルトなイベントの指定方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-27 14:09
デザイナからコントロールをダブルクリックすると、そのコントロールの良く使うイベント?、が追加される訳ですが、自作したコントロールで自作したイベントで同様に行いたい場合は、どのように指定すれば良いのでしょうか?
VBのプロパティだと default って書いた気がしましたが・・・C# だと無理っぽいですし^^; | ||||||||||||
|
投稿日時: 2006-05-27 16:21
こんな具合で感じできます。
| ||||||||||||
|
投稿日時: 2006-05-27 17:15
できました。ありがとうございました。 ・・・同様にDefaultPropertyも指定できますが、僕はてっきり this で指定すれば良いのだとばかり思っていました。 | ||||||||||||
|
投稿日時: 2006-05-27 22:23
それ、インデクサと何かを混同していませんか... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-05-28 08:58
いろいろと混同しているかもしれません・・・ デフォルトイベントでインデクサがないのは重々承知しているのですが、デフォルトプロパティに関しては、[DefaultProperty("でほるとぷろぱ亭")]と指定できるようになっている意味がわからないです( ̄△ ̄?) デフォルトプロパティにできるのはインデックスを引数に与えられるものとなっていますが、これは VB ならプロパティの宣言自身に default と付ければ良かったと記憶しています。C# では this[] が同じ役割になるかと思っていたからです。 | ||||||||||||
|
投稿日時: 2006-05-28 13:19
少なくとも、デフォルト イベントとデフォルト プロパティ (インデクサ) は同じではありませんよね。 スレッドの最初の投稿に、違和感があっただけなんですよ。(;^-^)
「PropertyGrid」というキーワードも混ぜて検索してみてください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-05-28 16:41
あ、結局のところ、System.Reflection.DefaultMemberAttribute という属性が正解になります。
この属性の役割を、DefaultPropertyAttribute の役割だと勘違いしているのだと思います。(多分) ところで、同じ属性でも、適用するのが C# か VB かで、多少都合が違っていたりしますね。 VB ではインデックス付きのプロパティを完全にサポートしていますが、 C# ではサポートしていないことによる事情なのでしょう。 それと、VB ではプロパティ名としてインデクサの名前を指定できますが、 C# ではできない (this という指定しかできない) なんて違いもありますね。 C# では名前は重要ではない (使用側で使用されることがない) からでしょう。 逆に、VB は、プロパティ名を指定した呼び出し "も" サポートしているから... でしょうか? C# のインデクサは規定の「Item」というプロパティ名が使われますが、 変更したい場合は、System.Runtime.CompilerServices.IndexerNameAttribute という属性を使います。 VB みたいに、キーワード + 名前という制約の方がわかりやすいと思うんですけどねw _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-05-28 17:45
あっ、そういうことだったんですね。 PropertyGrid に影響するものだったとは・・・考えてみればイベントもそうですもんね。 これが分かれば、本当にごっちゃになっていたことが自分でもよくわかります。 いつもさり気ないヒントをありがとうございます。
そうなんですよね。 C#に引っ越してきたばかりの頃(つい最近ですがw)プロパティの指定の仕方がわからなくて一瞬焦りました。 VB6 の頃からデフォルトプロパティは多用していたため、下記の記述は最初から多用していたんです。
今回は、この書き方の違いも混乱の原因になってますです・・・ 問題なのは、ぷろぱ亭という記述を C# に用いる場合が起こりうるかどうかですね。 |