C#をなんとなくで.net的にWindowsフォームアプリ基礎練習

# 目的
プログラム超初心者が、なんとなくでボタン等を使ったフォームアプリの基礎練習をしたときの備忘録です。
初めて知った操作等を記録するだけ。

# ツールボックス
メニューバーより
* 表示→ツールボックス

で表示可能。(ここからボタン、ラベル等を選択する。)

# ツールのプロパティをソースコードで変更する方法

* 「Ctrlキー」 + 「InitializeComponent();をクリック」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4073944/ef8e4029-699d-4003-a9c4-b149c36eaf58.png)
* XXXXX.Designer.csが開く!(ここから、ソースコードでの、ツールのプロパティ設定が可能!)


# 日時を取得する方法

DateTimePickerというツールを使う。
年月日と時刻を両方表示するには、
以下プロパティの設定変更が必要です。
* フォーマットは「Custom」
```DateSetDateTimePicker.Format = DateTimePickerFormat.Custom;```
* 自由に「CustomFormat」を指定する。
```DateSetDateTimePicker.CustomFormat = "yyyy/MM/dd HH:mm";```

# ボタンクリック時の動作を書きたい時

デザイン画面より、フォームに配置したボタン選択し、ダブルクリック。
```private void XXXXXXXXButton_Click(object sender, EventArgs e)```
が自動で出る!

# ラジオボタン

特に設定せずとも、画面上のラジオボタンの内、ひとつしか選択できないようになっている!!
凄い便利!!

# 書いてみたソースコード

```C#:LogMenu.cs
namespace dakoku
{
    public partial class LogMenu : Form
    {
        //private DataAccess dataAccess;
        public LogMenu()
        {
            InitializeComponent();
        }

        private void PasswordSetButton_Click(object sender, EventArgs e)
        {
            if (PasswordTextBox.Text == "101")
            {
                MessageBox.Show("OK", "PASSWOR判定", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("NG", "PASSWOR判定", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void LogButton_Click(object sender, EventArgs e)
        {
            if(LoginRadioButton.Checked)
            {
                MessageBox.Show("Login：" + Log.Type.Login + "Date" + DateSetDateTimePicker.Text, "ログイン処理", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else if (LogoutRadioButton.Checked)
            {
                MessageBox.Show("Logout：" + Log.Type.Logout + "Date" + DateSetDateTimePicker.Text, "ログアウト処理", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Please select Login or Logout.", "選択エラー", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
    }
}

```

```C#:LogMenu.Designer.cs
using System.Windows.Forms;

namespace dakoku
{
    partial class LogMenu
    {
        /// <summary>
        ///  Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        ///  Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        ///  Required method for Designer support - do not modify
        ///  the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            PasswordLabel = new Label();
            PasswordTextBox = new TextBox();
            PasswordSetButton = new Button();
            DateSetDateTimePicker = new DateTimePicker();
            LogButton = new Button();
            LoginRadioButton = new RadioButton();
            LogoutRadioButton = new RadioButton();
            SuspendLayout();
            // 
            // PasswordLabel
            // 
            PasswordLabel.AutoSize = true;
            PasswordLabel.Location = new Point(41, 42);
            PasswordLabel.Name = "PasswordLabel";
            PasswordLabel.Size = new Size(126, 25);
            PasswordLabel.TabIndex = 0;
            PasswordLabel.Text = "PASSWORD：";
            // 
            // PasswordTextBox
            // 
            PasswordTextBox.Location = new Point(164, 39);
            PasswordTextBox.Name = "PasswordTextBox";
            PasswordTextBox.Size = new Size(148, 31);
            PasswordTextBox.TabIndex = 1;
            // 
            // PasswordSetButton
            // 
            PasswordSetButton.Location = new Point(318, 30);
            PasswordSetButton.Name = "PasswordSetButton";
            PasswordSetButton.Size = new Size(74, 48);
            PasswordSetButton.TabIndex = 2;
            PasswordSetButton.Text = "Set";
            PasswordSetButton.UseVisualStyleBackColor = true;
            PasswordSetButton.Click += PasswordSetButton_Click;
            // 
            // DateSetDateTimePicker
            // 
            DateSetDateTimePicker.CustomFormat = "yyyy/MM/dd HH:mm";
            DateSetDateTimePicker.Format = DateTimePickerFormat.Custom;
            DateSetDateTimePicker.Location = new Point(41, 93);
            DateSetDateTimePicker.Name = "DateSetDateTimePicker";
            DateSetDateTimePicker.ShowUpDown = true;
            DateSetDateTimePicker.Size = new Size(351, 31);
            DateSetDateTimePicker.TabIndex = 3;
            // 
            // LogButton
            // 
            LogButton.Location = new Point(192, 144);
            LogButton.Name = "LogButton";
            LogButton.Size = new Size(200, 86);
            LogButton.TabIndex = 6;
            LogButton.Text = "RECORD";
            LogButton.UseVisualStyleBackColor = true;
            LogButton.Click += LogButton_Click;
            // 
            // LoginRadioButton
            // 
            LoginRadioButton.AutoSize = true;
            LoginRadioButton.Checked = true;
            LoginRadioButton.Location = new Point(41, 154);
            LoginRadioButton.Name = "LoginRadioButton";
            LoginRadioButton.Size = new Size(89, 29);
            LoginRadioButton.TabIndex = 4;
            LoginRadioButton.TabStop = true;
            LoginRadioButton.Text = "LOGIN";
            LoginRadioButton.UseVisualStyleBackColor = true;
            // 
            // LogoutRadioButton
            // 
            LogoutRadioButton.AutoSize = true;
            LogoutRadioButton.Location = new Point(41, 189);
            LogoutRadioButton.Name = "LogoutRadioButton";
            LogoutRadioButton.Size = new Size(106, 29);
            LogoutRadioButton.TabIndex = 5;
            LogoutRadioButton.Text = "LOGOUT";
            LogoutRadioButton.UseVisualStyleBackColor = true;
            // 
            // PunchEditMenu
            // 
            AutoScaleDimensions = new SizeF(10F, 25F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(415, 263);
            Controls.Add(LogButton);
            Controls.Add(LogoutRadioButton);
            Controls.Add(LoginRadioButton);
            Controls.Add(DateSetDateTimePicker);
            Controls.Add(PasswordSetButton);
            Controls.Add(PasswordTextBox);
            Controls.Add(PasswordLabel);
            Name = "PunchEditMenu";
            Text = "Form1";
            ResumeLayout(false);
            PerformLayout();
        }

        #endregion

        private Label PasswordLabel;
        private TextBox PasswordTextBox;
        private Button PasswordSetButton;
        private DateTimePicker DateSetDateTimePicker;
        private Button LogButton;
        private RadioButton LoginRadioButton;
        private RadioButton LogoutRadioButton;
    }
}
```
```C#:Log.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace dakoku
{
    public class Log
    {
        public int Id { get; }
        public int Password { get; set; }
        public int LogType { get; set; }
        public DateTime LogTime { get; set; }

        public Log(int id, int password, int logType, DateTime logTime)
        {
            Id = id;
            Password = password;
            LogType = logType;
            LogTime = logTime;
        }
        public enum Type
        {
            Login,
            Logout
        }
    }
}

```