HtmlButton.OnServerClick

HtmlButton.OnServerClickが呼ばれると、ServerClickイベントが発生し、登録したイベントハンドラが実行される。

HtmlButton.OnServerClick(EventArgs) Method (System.Web.UI.HtmlControls) | Microsoft Docs

ボタンを押すと呼ばれるので、基本的に単独でこっちから呼ぶ事はない。というか呼べない。
HtmlButtonを継承して、ログを出すようにして、OnServerClickを通っているか確認する。
Default.aspxは、

form1だけ。
Default.aspx.csは、

CustomHtmlButtonを作成し、form1に追加する。
ハンドラの先頭と末尾にログを出す。
CustomHtmlButton.csを追加し、

OnServerClickの先頭と末尾にログを出す。

これが
これが

これが、

こうなった時に
こうなった時に

こうなった時に、

ログが出てる
ログが出てる

ログが出てる。
OnServerClickの中で、ハンドラが呼ばれてるのがわかる。
(最初、2回呼ばれてる時があったけど、しばらくしたら、1回だけになった・・・。なんだろ・・・。)

Sample/aspnet/HtmlButton/OnServerClick/src/HtmlButton_ at master · bg1bgst333/Sample · GitHub

HtmlButton.ServerClick

HtmlButton.ServerClickは、<button>タグのbuttonを押した時に発生するイベント。

HtmlButton.ServerClick イベント (System.Web.UI.HtmlControls) | Microsoft Docs

ここに、イベントハンドラを登録すると、押した時の処理を書ける。

今回は、VIsualStudioで。
今回は、VIsualStudioで。

今回は、VIsualStudioで。
Default.aspxを、

こう書いて、
Default.aspx.csで、

ここまで来て、TABを押すと、
ここまで来て、TABを押すと、

ここまで来て、TABを押すと、

こうなって、さらにTABを押すと、
こうなって、さらにTABを押すと、

こうなって、さらにTABを押すと、

こうなる
こうなる

こうなる。
あとは、

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace HtmlButton_
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            button1.ServerClick += new EventHandler(button1_ServerClick);
        }

        void button1_ServerClick(object sender, EventArgs e)
        {
            button1.InnerText = "Clicked!";
            //throw new Exception("The method or operation is not implemented.");
        }
    }
}

こう書く。
これで、

こっからButton1を押すと
こっからButton1を押すと

こっからButton1を押すと、

Button1がClicked!に変わる
Button1がClicked!に変わる

Button1がClicked!に変わる。
これだけじゃ寂しいので、

もうひとつハンドラを登録してみた。
今度は、Titleも"Clicked!"に変化する。

ここから
ここから

ここから、

Button1を押すと、Titleまで変わる。
Button1を押すと、Titleまで変わる。

Button1を押すと、Titleまで変わる。

Sample/aspnet/HtmlButton/ServerClick/src/HtmlButton_ at master · bg1bgst333/Sample · GitHub

HtmlButton

HTMLの<button>タグは、runat="server"を付けてC#側で扱えるようにした時に、HtmlButtonクラスのオブジェクトとして認識される。

HtmlButton クラス (System.Web.UI.HtmlControls) | Microsoft Docs

HtmlButton_.aspxで、

とし、HtmlButton_.aspx.csで、

とする。
button1を押したら、button1のテキストが、button1の型名になる。

これが
これが

これが、

こうなる
こうなる

こうなる。

Sample/aspnet/HtmlButton/HtmlButton/src/HtmlButton at master · bg1bgst333/Sample · GitHub

IEnumWbemClassObject

IWbemServices::ExecQueryの結果、列挙されたデータは、IEnumWbemClassObjectインターフェースのポインタとして渡される。

IEnumWbemClassObject (wbemcli.h) - Win32 apps | Microsoft Docs

IEnumWbemClassObject.cppで、

取得したIEnumWbemClassObjectインターフェースポインタを出力。

CoCreateInstance OK!
pLocator = 0x01ec0828
pLocator->ConnectServer OK!
pServices = 0x01eccfb4
CoSetProxyBlanket OK!
pServices->ExecQuery OK!
pEnumerator = 0x01ecd054
続行するには何かキーを押してください . . .

こうなる。

Sample/com/IEnumWbemClassObject/IEnumWbemClassObject/src/IEnumWbemClassObject at master · bg1bgst333/Sample · GitHub

HttpRequest.Item[]

HttpRequest自体がインデクサに対応しており、

HttpRequest.Item[String] プロパティ (System.Web) | Microsoft Docs

QueryString、Form、Cookies、ServerVariablesなどから、指定のキーに対応する値を取得できる。

こうすると、

ここから
ここから

ここから、OKボタンで、

このように取れる
このように取れる

このように取れる。

Sample/aspnet/HttpRequest/Item/src/HttpRequest at master · bg1bgst333/Sample · GitHub

HttpRequest.Form

HttpRequest.Formでフォームで送られたデータを取得する。

HttpRequest.Form プロパティ (System.Web) | Microsoft Docs

こちらもNameValueCollectionで渡る。

inputタグのtypeがtextで、2つの入力データを送る。

これでOK押すと
これでOK押すと

これでOK押すと、

こうなる
こうなる

こうなる。

Sample/aspnet/HttpRequest/Form/src/HttpRequest at master · bg1bgst333/Sample · GitHub

HttpRequest.QueryString

HttpRequest.QueryStringでクエリ文字列を取得する。

HttpRequest.QueryString プロパティ (System.Web) | Microsoft Docs

NameValueCollectionで渡るので、

for文とGetKeyやGetでキーと値を取得することもできるし、ハッシュ形式でキーを指定して値を取得することもできる。

最初はこの状態
最初はこの状態

最初はこの状態。
OKを押すと、

このようにクエリ文字列を取得できる
このようにクエリ文字列を取得できる

このようにクエリ文字列を取得できる

Sample/aspnet/HttpRequest/QueryString/src/HttpRequest at master · bg1bgst333/Sample · GitHub