- PR -

Subの実行

1
投稿者投稿内容
きむた
会議室デビュー日: 2007/02/21
投稿数: 10
投稿日時: 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/01/29
投稿数: 15
投稿日時: 2007-02-27 09:33
きむたさん、こんにちは。
両方のイベントで、同じメソッドを呼ぶようにして下さい。
rucio
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 98
投稿日時: 2007-02-27 09:37
この場合なら
Call ListBox_DoubleClick(sender, Nothing)
でいけます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-02-27 10:14
これに似たような質問は、どの技術系コミュニティでも定期的に現れますね。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36921&forum=36

イベント概念を考慮して、シュリさんの案に 1 票です。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 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/21
投稿数: 10
投稿日時: 2007-02-27 13:36
シュリさん、rucioさん、じゃんぬねっとさん、一郎さん

ご返答ありがとうございました。
VB6の時は、普通に実行できたので余り気にしていませんでしたが、色々と概念があるのですね。
大変勉強になりました。
ありがとうございました。

>>senderとeの意味は何でしょうか。
フォーム上でダブルクリックをすると、自動で生成するコードを使っています。
引数をそのまま使っているだけで、特に意味はありません。
っていうよりよく分かってません。 すいません。
1

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