どっとねっとふぁん

C# Tips And Samples
in 検索

10.ボタンクリック時の処理

最新の投稿は、投稿日時: 06-23-2005, 4:49 午後 投稿者: ono です。スレッドには 0 件の返答があります。
投稿のソート: 前へ 次へ
  •  06-23-2005, 4:49 午後 56

    10.ボタンクリック時の処理

    ボタンが押されたときの処理は、以下のようにButtonコントロールのOnClickに起動させたいメソッドの名前を記述します。
    -------------------------------------------------------
    <%@ Page language="c#" %>
    <html>
    <head>
    <script runat=server>
    void button1_Click(Object sender, EventArgs e) 
    {
        Message.Text="ボタン1がクリックされました。";
    }
    
    void button2_Click(Object sender, EventArgs e) 
    {
        Message.Text="ボタン2がクリックされました。";
    }
    </script>
    </head>
    <body>
    <form runat="server">
    <asp:Button id="Button1" Text="ボタン1" OnClick="button1_Click" runat="server"/>
    <asp:Button id="Button2" Text="ボタン2" OnClick="button2_Click" runat="server"/>
    <br />
    <asp:label id="Message" runat="server"/>
    </form>
    </body>
    </html>
    
    -------------------------------------------------------

    上記のように複数のボタンが同じような処理を行う場合、メソッドを1つにまとめてしまうこともできます。
    -------------------------------------------------------
    <%@ Page language="c#" %>
    <html>
    <head>
    <script runat=server>
    void button_Click(Object sender, EventArgs e) 
    {
        Message.Text=((Button)sender).Text + "がクリックされました。";
    }
    </script>
    </head>
    <body>
    <form runat="server">
    <asp:Button id="Button1" Text="ボタン1" OnClick="button_Click" runat="server"/>
    <asp:Button id="Button2" Text="ボタン2" OnClick="button_Click" runat="server"/>
    <br />
    <asp:label id="Message" runat="server"/>
    </form>
    </body>
    </html>
    
    -------------------------------------------------------

    しかし、どのボタンが押されたかを、必ずボタンに表示されているTextで区別しなければいけないとしたら、プログラムがわかりにくいものになってしまいますね。
    そのような場合にはコマンドボタンを利用しましょう。
    ブラウザ上には表示されないCommandNameを評価して、処理を切り分けることが可能です。また、引数をCommandArgumentとして受け取ることができます。
    -------------------------------------------------------
    <%@ Page language="c#" %>
    <html>
    <head>
    <script runat=server>
    void CommandButton_Click(Object sender, CommandEventArgs e) 
    {
        Message.Text=e.CommandName + e.CommandArgument + "がクリックされました。";
    }
    </script>
    </head>
    <body>
    <form runat="server">
    <asp:Button id="Button1"
                Text="ボタン1"
                CommandName="コマンド名1"
                CommandArgument="コマンド引数1"
                OnCommand="CommandButton_Click"
                runat="server"/>
    <asp:Button id="Button2"
                Text="ボタン2"
                CommandName="コマンド名2"
                CommandArgument="コマンド引数2"
                OnCommand="CommandButton_Click"
                runat="server"/>
    <br />
    <asp:label id="Message" runat="server"/>
    </form>
    </body>
    </html>
    
    -------------------------------------------------------

    ボタンをコマンドボタンにするには、OnClickのかわりにOnCommandを利用します。
    このとき、処理に対応するメソッドの第2引数がCommandEventArgsになることに注意しましょう。

    ボタンとコマンドボタンは同じクラスなので、次のような記述もできちゃいますが、プログラムがわかりにくくなるのでやめたほうがいいでしょうね(^^;
    -------------------------------------------------------
    <%@ Page language="c#" %>
    <html>
    <head>
    <script runat=server>
    void button_Click(Object sender, EventArgs e) 
    {
        Message.Text=((Button)sender).CommandName + ((Button)sender).CommandArgument + "がクリックされました。";
    }
    </script>
    </head>
    <body>
    <form runat="server">
    <asp:Button id="Button1"
                Text="ボタン1"
                CommandName="コマンド名1"
                CommandArgument="コマンド引数1"
                OnClick="button_Click"
                runat="server"/>
    <asp:Button id="Button2"
                Text="ボタン2"
                CommandName="コマンド名2"
                CommandArgument="コマンド引数2"
                OnClick="button_Click"
                runat="server"/>
    <br />
    <asp:label id="Message" runat="server"/>
    </form>
    </body>
    </html>
    
    -------------------------------------------------------

    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
RSS ニュースフィードで参照
SkinName:iroha_CS2
Powered by Community Server, by Telligent Systems