DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ボタンのクリックイベントの問題点

環境/言語:[Win_XP VB.NET ]
分類:[.NET]

ボタンのクリックイベントを発生させるに件に関してですが。
Button1.PerformClick()
を使用した場合、起動時に上記方法で呼び出した場合、イベントが発生しないボタンが出てきますのでご注意ください。
(マウスクリック後は問題なく動作しますけど)
この現象はランダムに発生するのではなく、起動後常に同じボタンで発生します。
対応策としては、下記の方法で問題なく動作します。
Dim e As System.EventArgs
Button155_Click("", e)
こんにちは、Yukiさん。ピラルクです。

ButtonのEnabledがFalseだったり、VisibleがFalseだったりすると
Clickイベントは走らないようですね。PerformClickはユーザのClick
をシミュレートするという感じで、ユーザがその時Click出来ない条件
ならPerformClickは何もしないみたい。

VB6以前でPerformClickに近いものとして、
Command1.Value = True  'VB6コード
という書き方がありましたが、こちらはButtonの
EnabledがFalseでも走っていました。

(今日はこんなことばかりしてますが...(^^;)

Private Sub Form_Load()
  Command1.Value = True
End Sub

というVB6コードを、アップグレードウィザードにかけると、

Private Sub Form1_Load(...
  Command1.PerformClick()
End Sub

としてくれました。(/_;) (期待通りなコトを...)

▼Visual Basic .NET における CommandButton コントロールの変更点
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vxconchangestooptionbuttoncontrolinvisualbasicnet.asp
| Value 対応する項目はありません。
| PerformClick メソッドは、Value を true に設定するのと同じです。
| Value プロパティのその他の用途については、対応する項目はありません。 

「……同じです」とありますが、全然同じじゃないですね。

個人的には、Buttonの状態も加えて判断してくれる
PerformClickの動きは、有難く活用できるケースがありそう
で好みです。無条件に呼びたいならYukiさんのコードのよう
に呼べますから。よってBugではなく仕様でも良いのですが(私的には)、
何れにせよ、このドキュメントはいただけませんねぇ。

DOBON.NET | プログラミング道 | プログラミング掲示板