From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。
---
HotelPms.SourceFactory/FormValid.cs | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 156 insertions(+), 0 deletions(-)
diff --git a/HotelPms.SourceFactory/FormValid.cs b/HotelPms.SourceFactory/FormValid.cs
new file mode 100644
index 0000000..a5d5c89
--- /dev/null
+++ b/HotelPms.SourceFactory/FormValid.cs
@@ -0,0 +1,156 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HotelPms.SourceFactory
+{
+ public partial class FormValid : Form
+ {
+ /// <summary>
+ /// Validatingチェック&メッセージ表示攻略
+ /// ①CausesValidationItemを作成
+ /// ②終了ボタンのCausesValidation = falseでValidatingを一旦止める(※注意:フォーカスを離れると、Validatingは再度走る)
+ /// ③WndProcで×ボタンを押した時に、Validatingを一旦止める仕掛け this.ActiveControl = 終了ボタン;
+ /// ④FormValid_KeyDownを押した時に、Validatingを一旦止める仕掛け this.ActiveControl = 終了ボタン;
+ /// ⑤全部Validatingの先頭に下記の追加(CausesValidation = falseで一旦止めたValidatingは再度走る防止するため)
+ /// if (!CausesValidationItem(sender)) { return; }
+ /// </summary>
+ public FormValid()
+ {
+ InitializeComponent();
+ button1.CausesValidation = true;
+ // button2.TabIndex = 0;
+ button2.CausesValidation = false; //終了
+ }
+
+ private bool CausesValidationItem(object sender)
+ {
+ return this.ActiveControl.CausesValidation;
+ }
+
+ private void textBox1_Validating(object sender, CancelEventArgs e)
+ {
+ if (!CausesValidationItem(sender)) { return; }
+ MessageBox.Show("textBox1_Validating");
+ }
+
+ private void textBox2_Validating(object sender, CancelEventArgs e)
+ {
+ if (!CausesValidationItem(sender)) { return; }
+ //if (!this.CausesValidation) { return; }
+ MessageBox.Show("textBox2_Validating");
+ }
+
+ private void textBox3_Validating(object sender, CancelEventArgs e)
+ {
+ if (!CausesValidationItem(sender)) { return; }
+ MessageBox.Show("textBox3_Validating");
+ }
+
+ private void textBox4_Validating(object sender, CancelEventArgs e)
+ {
+ if (!CausesValidationItem(sender)) { return; }
+ MessageBox.Show("textBox4_Validating");
+ }
+
+ private void textBox5_Validating(object sender, CancelEventArgs e)
+ {
+ System.Diagnostics.Debug.WriteLine("Raise textBox5_Validating ");
+ if (!CausesValidationItem(sender)) { return; }
+ MessageBox.Show("textBox5_Validating");
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ //Focus時、前のコントロールのValidatingを一旦止める
+
+ this.Close(); //この時点、ボタンをフォーカスを離れるので、前のコントロールのValidatingを再度走る
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ MessageBox.Show("button1_Click");
+ }
+
+ private void FormValid_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.F1)
+ {
+ this.ActiveControl = button1;
+ button1.PerformClick();
+ }
+ else if (e.KeyCode == Keys.F12)
+ {
+ this.ActiveControl = button2;
+ button2.PerformClick();
+ }
+ }
+
+ protected override void WndProc(ref Message m)
+ {
+ //Console.WriteLine(m.Msg);
+ const int WM_SYSCOMMAND = 0x0112;
+ const int SC_CLOSE = 0xF060;
+ if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
+ {
+ //windowsの×ボタンを押すとき
+ this.ActiveControl = button2;
+ }
+ base.WndProc(ref m);
+ }
+
+ private void FormValid_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ //コントロールのValidatingの後
+ this.ActiveControl = button2;
+ }
+
+ private void textBox5_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
+ {
+ switch(e.KeyCode)
+ {
+ case Keys.Tab:
+ //enterや、tabでボタンへフォーカスする時、まだ終了していないので、チェックすることは望ましい
+ textBox5_Validating(sender, new CancelEventArgs());
+ e.IsInputKey = false;
+ break;
+ }
+ }
+
+ private void textBox5_Enter(object sender, EventArgs e)
+ {
+ textBox5.BackColor = Color.Cyan;
+ }
+
+ private void textBox5_Leave(object sender, EventArgs e)
+ {
+ textBox5.BackColor = Color.White;
+ }
+
+ private void textBox4_Enter(object sender, EventArgs e)
+ {
+ textBox4.BackColor = Color.Cyan;
+ }
+
+ private void textBox4_Leave(object sender, EventArgs e)
+ {
+ textBox4.BackColor = Color.White;
+ }
+
+ private void textBox1_Enter(object sender, EventArgs e)
+ {
+ textBox1.BackColor = Color.Cyan;
+ }
+
+ private void textBox1_Leave(object sender, EventArgs e)
+ {
+ textBox1.BackColor = Color.White;
+ }
+ }
+}
--
Gitblit v1.10.0