C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

イベントハンドラ 実行順について


(過去ログ 5 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■5118 / inTopicNo.1)  イベントハンドラ 実行順について
  
□投稿者/ あんず 二等兵(1回)-(2006/07/26(Wed) 10:26:52)

分類:[VB.NET] 


分類:[VB.NET] 

はじめまして、イベントハンドラについての質問です。
Button1、Button2が画面上にあり、
例えば、次のようにそれぞれのボタンで実行したい処理と
2つのボタンで同じ処理をしたい場合があります。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show("ボタン1が押されました")
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MessageBox.Show("ボタン2が押されました")
End Sub

Private Sub Button_both(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click
MessageBox.Show("ボタン1、2が押されました")
End Sub

この場合、2つのボタンで同じ処理をするプログラムを先に実行させてから
それぞれのボタンで実行したい処理をしたいときに
どうすれば実行順を決められるのか教えてください。

プログラムの順番を変えても処理順は変わらず、
また、イベントハンドラ名(button_bothなど)を変えてみたら
順番が変わりましたが、
たまたまなのか、どのような規則で変わっているのかが分かりません。
初心者ですが、ご回答よろしくお願いします。

0
引用返信 編集キー/
■5119 / inTopicNo.2)  Re[1]: イベントハンドラ 実行順について
□投稿者/ 名無しぃシャープ 少尉(131回)-(2006/07/26(Wed) 10:31:07)

分類:[VB.NET] 

No5118に返信(あんずさんの記事)
> はじめまして、イベントハンドラについての質問です。
> Button1、Button2が画面上にあり、
> 例えば、次のようにそれぞれのボタンで実行したい処理と
> 2つのボタンで同じ処理をしたい場合があります。
>
> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
> MessageBox.Show("ボタン1が押されました")
> End Sub
>
> Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
> MessageBox.Show("ボタン2が押されました")
> End Sub
>
> Private Sub Button_both(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click
> MessageBox.Show("ボタン1、2が押されました")
> End Sub
>
> この場合、2つのボタンで同じ処理をするプログラムを先に実行させてから
> それぞれのボタンで実行したい処理をしたいときに
> どうすれば実行順を決められるのか教えてください。
>
> プログラムの順番を変えても処理順は変わらず、
> また、イベントハンドラ名(button_bothなど)を変えてみたら
> 順番が変わりましたが、
> たまたまなのか、どのような規則で変わっているのかが分かりません。
> 初心者ですが、ご回答よろしくお願いします。

何でイベントなんかで統合しようとするのかがわからん。自分から難しくしてるだけ。
メソッドを書いてそのメソッドを2つのイベントハンドラで呼び出せばいいじゃん。

0
引用返信 編集キー/
■5124 / inTopicNo.3)  Re[1]: イベントハンドラ 実行順について
□投稿者/ KEI 二等兵(5回)-(2006/07/26(Wed) 14:55:42)

分類:[VB.NET] 

No5118に返信(あんずさんの記事)
初めましてKEIです。

Private Sub Button_Click(ByVal sender As System.Object, ByVal e As
           System.EventArgs) Handles Button1.Click, Button2.Click

Dim btn As Button = DirectCast(sender, Button)
'全てのボタンで行いたい処理
MessageBox.Show(btn.Name.ToString, "ボタン押下", _
         MessageBoxButtons.OK, MessageBoxIcon.Information)

'各ボタンで行いたい処理
Select Case btn.Name
> Case btn.Name = "Button1"
> MessageBox.Show(btn.Name.ToString & vbCrLf & "が押されました", "ボタン押下", _
MessageBoxButtons.OK, MessageBoxIcon.None)
> Case btn.Name = "Button2"
> MessageBox.Show(btn.Name.ToString & vbCrLf & "が押されました", "ボタン押下", _
MessageBoxButtons.OK, MessageBoxIcon.None)
End Select
End Sub


0
引用返信 編集キー/
■5125 / inTopicNo.4)  Re[2]: イベントハンドラ 実行順について
□投稿者/ KEI 二等兵(6回)-(2006/07/26(Wed) 15:10:14)

分類:[VB.NET] 

No5124に返信(KEIさんの記事)
> ■No5118に返信(あんずさんの記事)
間違って編集途中で送信しちゃいました…orz
たぶん上の内容があんずさんが実現したい事なのかな?と思うんですが…(^^;)
>名無しぃシャープさん
が、おっしゃってるように
各オブジェクトごとのイベントにちゃんと分けて書いた方が良いと思います。
Button1を押したのにButton2のイベントも実行するような形になるので…。
個々の繋がりは出来るだけなくす方がバグがでにくいし修正も容易に出来るはずです。


0
引用返信 編集キー/
■5127 / inTopicNo.5)  Re[3]: イベントハンドラ 実行順について
□投稿者/ あんず 二等兵(2回)-(2006/07/26(Wed) 16:19:50)

分類:[VB.NET] 

名無しぃシャープさん、KEIさん

ご返答ありがとうございました。
やり方がわからなくて、この方法がよい方法だと思っていました。
2人のやり方があることが分かったので、行ってみますね。

0
引用返信 編集キー/
■5131 / inTopicNo.6)  Re[4]: イベントハンドラ 実行順について
□投稿者/ あんず 二等兵(3回)-(2006/07/26(Wed) 17:59:32)

分類:[VB.NET] 

実際に試してみてできました。
ありがとうございました!

解決済み
引用返信 編集キー/
■5132 / inTopicNo.7)  Re[5]: イベントハンドラ 実行順について
□投稿者/ 中博俊 神(618回)-(2006/07/26(Wed) 18:37:38)
中博俊 さんの Web サイト

分類:[VB.NET] 

ちなみにイベントの実行順ですが、イベントの追加順に行われます。
VBの場合あえて自分でイベントを追加しない(Handlesを使う)ので不定としかいえないです。

解決済み
引用返信 編集キー/
■5138 / inTopicNo.8)  Re[6]: イベントハンドラ 実行順について
□投稿者/ あんず 二等兵(4回)-(2006/07/27(Thu) 11:30:48)

分類:[VB.NET] 

中博俊さん

では、イベントハンドラ名を変えたときに
順番が変わったのはやはり、たまたまだったのですね。
ご回答ありがとうございます。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -