- - PR -
Subの実行
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-02-27 09:25
いつも参考にさせて頂いております。
Enterを押した時だけ、DoubleClickした時と同じ動作をさせたいのですが、下記の方法を使っても良いのでしょうか? 実行はエラーとはなりませんが、『e』の定義が違う為どのようにすれば問題ないのかご教授頂けないでしょうか? よろしくお願い致します。 (e As System.Windows.Forms.KeyEventArgs と e As System.EventArgs が違う) Private Sub ListBox_DoubleClick(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles ListBox.DoubleClick TextBox.Visible = True Button.Visible = True TextBox.Focus() End Sub Private Sub ListBox_KeyDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyEventArgs) Handles ListBox.KeyDown If e.KeyCode = Keys.Enter Then Call ListBox_DoubleClick(sender, e) End If End Sub |
|
投稿日時: 2007-02-27 09:33
きむたさん、こんにちは。
両方のイベントで、同じメソッドを呼ぶようにして下さい。 |
|
投稿日時: 2007-02-27 09:37
この場合なら
Call ListBox_DoubleClick(sender, Nothing) でいけます。 |
|
投稿日時: 2007-02-27 10:14
これに似たような質問は、どの技術系コミュニティでも定期的に現れますね。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36921&forum=36 イベント概念を考慮して、シュリさんの案に 1 票です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
|
投稿日時: 2007-02-27 10:49
ListBox_DoubleClick()のsenderとeの意味は何でしょうか。
通常は、senderは「イベントのソース」(イベントの発生元オブジェクト)、eは「イベントデータを格納しているEventArgs」とします。 http://msdn2.microsoft.com/ja-jp/library/system.eventhandler(VS.80).aspx senderがイベントのソース、eがイベントデータとするならListBox_KeyDown()の中で Call ListBox_DoubleClick(sender, e) などとしてはいけません。 第二引数のeはKeyDownのイベントデータではありますがDoubleClickのイベントデータではないからです。Nothingもだめです。通常はEventArgs.Emptyを渡します。 第一引数のsenderもDoubleClickイベントのソースではないからだめです。ここには何を渡しても不正解です。 ListBox_DoubleClick()はきむたさんが定義したメソッドですので、引数の定義がそういった定義ではないとすることもできますが、その場合にも少なくともDoubleClickイベントで呼ばれた場合にはイベントソースやイベントデータが渡されますので、同じメソッドが複数の呼ばれ方をすることになります。 senderにイベントソースが渡されたり、その他の何かが渡されたりするわけです。これは良い設計とは言えません。その場合はメソッドを分けてください。 と、概念の話は終わりにして、つまりどうすれば良いかというと、シュリさんの案に一票。 読みづらい長文が書いてありますけど、参考にしてください。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8642&forum=7 [ メッセージ編集済み 編集者: 一郎 編集日時 2007-02-27 10:52 ] |
|
投稿日時: 2007-02-27 13:36
シュリさん、rucioさん、じゃんぬねっとさん、一郎さん
ご返答ありがとうございました。 VB6の時は、普通に実行できたので余り気にしていませんでしたが、色々と概念があるのですね。 大変勉強になりました。 ありがとうございました。 >>senderとeの意味は何でしょうか。 フォーム上でダブルクリックをすると、自動で生成するコードを使っています。 引数をそのまま使っているだけで、特に意味はありません。 っていうよりよく分かってません。 すいません。 |
1