- PR -

Clickイベントを破棄できますか?

投稿者投稿内容
uguisu
会議室デビュー日: 2004/01/14
投稿数: 6
投稿日時: 2004-01-14 14:19
ASP.NETでは、ボタン(ここではButton1)押下時に、
  ・ Page_Load()
  ・ Button1_Click()
という順序でイベントが発生します。

Button1_Click()イベントが発生する前に、このイベントをキャンセルさせたいのですが、
このようなことは可能でしょうか?
もし可能でしたら、実現方法を教えてください。
タマ(ω・ミэ )Э
会議室デビュー日: 2003/02/28
投稿数: 5
投稿日時: 2004-01-14 15:20
サーバサイドでイベントキャンセルできるかは、残念ながら僕にはわかりません。

ですが、クライアントサイドであれば
Button1.Attributes.Add("onClick","return confirm('実行しますか?');")

のように、ポストバック前でキャンセルできます。

どのような使い方をなさるのでしょうか?
uguisu
会議室デビュー日: 2004/01/14
投稿数: 6
投稿日時: 2004-01-14 15:39
返信ありがとうございます。

今回は、サーバサイドでキャンセルしたいのです・・・。
なので、例えばPage_Load()などで何らかの処理を行って、
Clickイベントをキャンセルできたら良いなと考えています。

Private Sub Page_Load()
  If xxxxx then
     'クリックイベント処理をキャンセルしたい
     '※Clickイベントを発生させたくない

  End If
End Sub


Private Sub Button1_Click()
  'クリック時の処理
End Sub

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-14 15:48
引用:

uguisuさんの書き込み (2004-01-14 15:39) より:

Private Sub Page_Load()
  If xxxxx then
     'クリックイベント処理をキャンセルしたい
     '※Clickイベントを発生させたくない

  End If
End Sub


Private Sub Button1_Click()
  'クリック時の処理
End Sub




そういう風に、if文を入れていいなら、、、

Private CancelClickEvent As Boolean

Private Sub Page_Load()
  If xxxxx then
     'クリックイベント処理をキャンセルしたい
     '※Clickイベントを発生させたくない
     CancelClickEvent = True
  Else
     CancelClickEvent = False
  End If
End Sub


Private Sub Button1_Click()
  'クリック時の処理
  If CancelClickEvent = True Then Return
End Sub

つまり、イベントそのものをキャンセルするのではなく、イベントの内容をキャンセルするわけだけど、これでいい?

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-01-14 15:50 ]
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-01-14 16:44
uguisuさん、こんにちは。

引用:

なので、例えばPage_Load()などで何らかの処理を行って、
Clickイベントをキャンセルできたら良いなと考えています。


VBなら、RemoveHandler ステートメントでどうでしょう?
(C#なら、Button.Click -= this.Button_Click とか書くのかな?)
uguisu
会議室デビュー日: 2004/01/14
投稿数: 6
投稿日時: 2004-01-14 17:51
Jittaさん、きくちゃん、返信ありがとうございます。

Jittaさん、今回は、イベントそのものをキャンセルしたかったので、
イベントの中身をキャンセルするのとはちょっと趣旨が違いました・・・。
説明不足で申し訳ありません。

きくちゃんさん。
RemoveHandlerってAddHandlerで関連付けをしたイベントを削除するステートメント?
でしょうか?

例えば、

Private Sub Button1_Click() Handles Button1.Click
  'クリック時の処理
End Sub

というようにHandlesを使って、イベントを処理を指定してしまうと、
RemoveHandlerが使用できない気がするのですが・・・。
できるのかな〜・・・。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-01-14 18:12
uguisuさん、こんばんは。

引用:

Jittaさん、今回は、イベントそのものをキャンセルしたかったので、
イベントの中身をキャンセルするのとはちょっと趣旨が違いました・・・。


そうかも知れませんが、実質的に何か違うんですか?

引用:

RemoveHandlerが使用できない気がするのですが・・・。


まあ、百聞は一見にしかずというか、論より証拠というか(どっちも違う?)、一度試してみて、それから、結果を教えて下さい。

【追記】
あれ? イベントの発生そのものをキャンセルしたい、という事ですか?
#だとしたら多分、出来ないんじゃないかな...。

RemoveHandler はイベントとイベントハンドラの関連づけを解除するステートメントなので、結果的にはJittaさんの方法と変わらないと思います。


[ メッセージ編集済み 編集者: きくちゃん 編集日時 2004-01-14 18:37 ]
uguisu
会議室デビュー日: 2004/01/14
投稿数: 6
投稿日時: 2004-01-14 19:37
きくちゃんさん。こんばんは。

引用:

あれ? イベントの発生そのものをキャンセルしたい、という事ですか?
#だとしたら多分、出来ないんじゃないかな...。

RemoveHandler はイベントとイベントハンドラの関連づけを解除するステートメントなので、結果的にはJittaさんの方法と変わらないと思います。



そうです。イベントの発生そのものをキャンセルしたかったのです・・・。
色々貴重な意見をありがとうございました。

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