VB.NET(WebForm)_初心者メモ

# はじめに
業務でVB.NET(WebForm)で開発を始めましたが、VBの開発が初めてのため、
わからないことは「ググるOR参考書読むOR時間がない場合はあいまいな理解で放置する」
という感じで開発を進めています。
業務でラクしたいので休日を使って基本的なことはまとめておくことにしました。


# コードビハインドについて
Webフォームでは、コードビハインド（分離コード）の仕組みによりマークアップテンプレート（.aspxファイル）とバックエンドクラス（C#やVisual Basicコード）を分離できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/1ef868e9-db60-4e77-35e7-364d2808f4b5.png)

# コントロールについて
- コントロールとは
   - ラベルやボタンなどのプログラム部品のこと。
   - プロパティ：コントロールの性質。
      - runat=server:サーバ側で処理される。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/8733ac6e-bcde-c3c1-d828-a9e93bd4bd2a.png)
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/c210c338-09a7-df9f-71fe-86a701213a67.png)
☆コントローラ【ID：Label1】からrunat=serverを消すと実装コードからLabel1にアクセスできなくなる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/79f22c52-d1a0-0017-1f91-8638589b7b4d.png)

   - メソッド：コントロールの動作。
   - イベント：clickなどのできごと。
   - イベントハンドラー：イベントが起きた時に実行する手続き。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/05e3b293-b4da-956a-d018-4c399191d864.png)

       - ShowText:プロシージャ名
       - Button1:コントローラ名（ID）
       - Click:イベント名
       - Label1:コントローラ名（ID）
       - .Text:プロパティ
       
# GUIでプロパティを設定する
- コントロールのプロパティをGUIで設定可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/84613565-8c46-c4d3-9f2f-ba2a29ac1bc9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/cd651c8e-b72e-151b-557c-72557cfd4658.png)

# GUIでメソッドを設定する
 - デザインモードで表示したコントロールをクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/e54f2583-6ef4-1fcd-7370-9dabbae3325d.png)

 - クリックアクションにプロシージャ名を入力すると、サーバーサイドクラスにメソッドが生成される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/a9125628-8a8e-5101-eaa7-4ab85aaf6c9f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/1101c48c-d0e4-0cad-bada-5f326cf7ccc0.png)
# リテラルのデータ型を明示的に指定する
`#3/28/2020#   'Date
"A"c          'Char
1234.56D      'Decimal
100S          'Short
65536%        'Integer
20000000000L  'Long
3.14F         'Single
3.14#         'Double`
何もつけない場合
　小数点付き数値リテラルはDouble
　整数のリテラルはInteger

# スコープ
- モジュールレベル変数（クラス内で使用可能）
- 
- プロシージャレベル変数（プロシージャ内で使用可能）




# 動作確認 
### ボタンをクリックするとLabelの表示(TEXTプロパティ)が変わる処理
.aspx
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/8855898a-095f-b467-7a33-7e565e74d683.png)

.aspx.vb
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/1778a320-eb0a-e271-bf14-1207723eb135.png)

ボタンクリック前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/5802c1a7-5690-08e2-e295-94ebed5af04c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/71286040-ba7c-7a8a-d0b9-d523a7459860.png)

ボタンクリック後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/2edecb65-7283-9fd8-7936-48b1bbcc4c77.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/e4eec839-4e1d-577b-a4d2-81d6ada8fa3f.png)

### ステートメントを複数行に書く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/1ddd4408-ae95-440f-4917-107f16902891.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/818b8406-d181-b80c-2d0c-3424ae5668db.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/84e1b92d-1132-de2c-2a75-aef3fa7d2fbc.png)

### 長文を自動で折り返す設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/d7c3a52f-cbb3-64f6-fbf2-9f6dd1f0118a.png)

### データ型を厳密に扱う記載
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/3fd4cded-3d20-86cc-1a5c-18d25d82db24.png)

### データ型の宣言
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/af05106f-9345-3588-5764-5dbb97acab57.png)　
・String型は参照渡し（文字列を代入するたびに新しいメモリを作成）
・StringBuilder型は値渡し（文字列を代入するたびに同じメモリを変更）
　文字列を結合して作成するときはこちらを使う。
・Integer,Double型は値渡し

### 変数の初期化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553550/3f9c6b57-eef9-f30f-8ad8-43c26068194c.png)
・Integer型の変数に初期値を設定していない場合は０が規定値となる

### JSを利用する
JSを実行した後、サーバでの処理は実行されない
`
OnClientClick='alert("click"); return false;'
`
JSを実行した後、サーバでの処理が実行される
`
OnClientClick='alert("click"); return true;'`


★追記していきます。