2017-01-24 57 views
1

私は自分のプロジェクト(ASP.NET Webフォーム)に関するいくつかの調査を行い、OnCommandとOnClickのような2つのイベントタイプに遭遇しました。私はMSDNのページを読んだが、私はまだそれらの違いについては不明である。OnCommandとOnClick

OnCommandとOnClickの違いは何ですか?いつどのイベントを使用したいですか?

//それは発言のセクションで重要な違いを述べてMSDNドキュメント内のアプリ

+0

これはどのアプリケーションですか?あなたはどのタイプのコントロールでアクションを実行していますか? –

+0

対象とするもの:Winforms、WPF、ASP ..? __Always__あなたの質問に正しくタグを付けてください! – TaW

+0

検索エンジンを使ってみましたか?私はすぐにこのサイトを見つけました:http://forums.codeguru.com/showthread.php?490339-onCommand-vs-onClick-for-Buttons –

答えて

2

ドキュメントが少し不明な場合は、わかりやすいです。

OnClickは、OnCommandよりも低いレベルのイベントです。あなたはOnClickを物理的なイベントのように考えることができ、OnCommandはより論理的なイベントのように考えることができます。

コントロールがクリックされると、コントロールにクリックがあったことを通知するOnClickイベントを受け取ります。コントロールはさまざまなことをレスポンスとして行うことができます。コントロールにコマンドが関連付けられていて、イベントのデフォルト処理が行われることが許可されている場合、システムはこれに続いてOnCommandイベントを返します。

(私は/あなたがリサイズでデフォルトの処理の抑制をどのくらいのコントロール覚えていないが、あなたは確かに根本的なWin32プログラミング層のそれを制御することができますかわからない。)

OnCommandイベントは、クリック以外の手段によってトリガされてもよい。たとえば、キーボードショートカットを使用してコントロールをアクティブにすることができます。その場合は、OnClickはありません。このすべてから家に持ち帰るために

知識は次のとおりです。

オンデマンドで十分なときのOnClickを使用しないでください。

あなたはビジネスロジック操作をトリガするためOnClickを使用するようにプログラムを記述する場合は、あなたのプログラムは、マウスを使用するユーザーが必要になります。障害のためにマウスを使用することができない多くのユーザーがいます。単純にマウスの上にキーボードを好む多くのユーザーがいて、マウスを持っていない多くのデバイスがあります。

(これらのデバイスでは、クリックはしばしば接触によってシミュレートされることがありますが、それは保証されているわけではありませんし、これらのすべての不器用なシミュレーションは最初は必要ではありませんでした。プログラマは、最初の場所に不注意だったと、彼らは代わりにOnCommandOnClick上でアクションをトリガするような愚かなことをやってました。)

あなたがあなた自身のコントロールを書いた場合OnClickを使用しても大丈夫でしょう。たとえば、独自のエディットボックスコントロールを作成していて、その正確な場所にキャレットを配置するためにコントロール内のどこかをクリックできるようにしたい場合は、それをレスポンスとして行うことは大丈夫ですOnClickイベントがトリガーされています。しかし、このアクションがコントロールの内部使用のみであることに注意してください。コントロールの外部にあるアクションはトリガーされません。

0

の種類に指定するように編集。オンデマンドで

:クリック時で

The Command event is raised when the Button control is clicked. This event is commonly used when a command name, such as Sort, is associated with the Button control. This allows you to create multiple Button controls on a Web page and programmatically determine which Button control is clicked.

だから、

The Click event is raised when the Button control is clicked. This event is commonly used when no command name is associated with the Button control (for instance, with a Submit button).

、あなただけのボタンがクリックされたときに、いくつかのコードが実行したいが、気にしない場合具体的なケースでの具体的な実行はOnClickです。

編集:OnCommandを使用すると、複数のボタンからのイベントを処理し、渡されたコマンド名に基づいて適切なコードを実行するハンドラを1つ持つことができます。

3

これはストレートMSDNのページからhttps://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx

ですが、少し冗長に説明しようとする:

OnCommandをハンドラに追加の引数を渡すために使用されます。たとえば、リストを昇順と降順にソートする2つのボタンがあるとします。代わりに、各ボタンに別々のOnClickハンドラを書いて、あなたは両方のボタンに単一のハンドラを定義し、あなたがどのようなコマンド引数のボタンに応じて、複数のボタンのクリックを扱うことができる単一のハンドラを持っているので、ここでCommandNameCommandArgument

<asp:Button id="Button1" 
     Text="Sort Ascending" 
     CommandName="Sort" 
     CommandArgument="Ascending" 
     OnCommand="CommandBtn_Click" 
     runat="server"/> 

    <asp:Button id="Button2" 
     Text="Sort Descending" 
     CommandName="Sort" 
     CommandArgument="Descending" 
     OnCommand="CommandBtn_Click" 
     runat="server"/> 


    void CommandBtn_Click(Object sender, CommandEventArgs e) 
    { 

     switch(e.CommandName) 
     { 

     case "Sort": 

      // Call the method to sort the list. 
      Sort_List((String)e.CommandArgument); 
      break; 
     } 

    } 

を渡すことができます通過している。

関連する問題