「e」について

解決


しゅう  2009-01-06 18:43:53  No: 141203

VB2005についてGoogleで調べていたら

Windows フォーム DataGridView コントロールの列を操作する
http://msdn.microsoft.com/ja-jp/library/wc06dx4f(VS.80).aspx

という記事がありました。

VBサンプルのまんなかあたりに

Private mouseLocation As DataGridViewCellEventArgs

  ' Deal with hovering over a cell.
  Private Sub dataGridView_CellMouseEnter(ByVal sender As Object, _
    ByVal location As DataGridViewCellEventArgs) _
    Handles DataGridView.CellMouseEnter

    mouseLocation = location
End Sub

という部分があります。
VBのエディタ部でこのイベントプロシージャを自動生成すると

Private Sub DataGridView1_CellMouseEnter(ByVal sender As Object, _
   ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)  _
   Handles DataGridView1.CellMouseEnter

End Sub

2番目の引数が「e」となっています。
MSDNのサンプルはその「e」を「location」と変更しています。

実際にこのサンプルは動作しますので間違ってはいないのでしょうが
初心者としては抵抗があります。

自動生成される「e」を変更することはよくあることなのでしょうか?


YuO  2009-01-06 19:33:52  No: 141204

私は変更しないですが,所詮は引数名でしかありません。
なので,eよりlocationが妥当であると思うのであればlocationにすればよいです。

ガイドラインによると,イベントは,
・senderという名のSystem.Object型の引数
・eという名のSystem.EventArgs型かその派生型の引数
の2つの引数をこの順序でとり,
・引数を返さない
というデリゲート型になっているため,自動生成されるコードではeになっていると思います。
# デリゲートの引数名を変更すれば,別の名前で生成されます。
ref) http://msdn.microsoft.com/ja-jp/library/ms229011.aspx


特攻隊長まるるう  2009-01-06 20:58:52  No: 141205

YuOさんに同じく。。。

関数内のみで使うローカル変数と同じですから、分かり易い
ほうを使えばいいと思います。
  Dim i As Integer
でループを回すのと、
  Dim row As Integer
にするのと。

意味を持たせたコードを書くようにしてるので row の宣言を
お勧めしてますが、1文字の変数って目に残ります。
ループの条件をみれば何をカウントアップしてるのか明白な時は、
i の宣言の方が分かり易いのでは?と思ってます。

>自動生成される「e」を変更することはよくあることなのでしょうか?
ボクは変更することは無いです。サンプルでは location に
なってるようですが、location(位置情報)以外の情報も持って
いるからです。イベントの引数は e のままの方が分かり易い
からです。
逆に、サンプルでは、イベントの引数のうち、位置情報だけ
利用しますよ…というなら location に変更した方が分かり
易いかも?

ボクが自動生成されたコードを変更する場合で多いのが
イベントの関数名ですね。
    Private Sub Button1_Click(ByVal sender As System.Object _
                            , ByVal e As System.EventArgs)  _
                            Handles Button1.Click
Button2 でも共通処理になった場合、
    Private Sub CommonSub_Button_Click(ByVal sender As System.Object _
                            , ByVal e As System.EventArgs)  _
                            Handles Button1.Click, Button2.Click
とか。[VB6.0]時代は関数名とイベントが結びついていましたが、[VB.NET]
になってから Handles 句で結びつくようになりましたので。


しゅう  2009-01-07 22:33:24  No: 141206

YuO さん、特攻隊長まるるうさん  ありがとうございました。
基本的には自動生成のままでいいということですね。

環境(チームの方針など)で強制されない限りはMSの言うなりに
しておきます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加