TabControl.Deselecting イベント (System.Windows.Forms) | Microsoft Docs
がいいんじゃないでしょうか。
cs
1using System;
2using System.Drawing;
3using System.Windows.Forms;
4
5namespace Questions289215
6{
7 public partial class Form1 : Form
8 {
9 public Form1()
10 {
11 InitializeComponent();
12
13 var tabControl = new TabControl { Dock = DockStyle.Fill, };
14 tabControl.Deselecting += TabControl_Deselecting;
15 Controls.Add(tabControl);
16
17 for(var i = 1; i < 11; i++)
18 {
19 var tabPage = new TabPage($"Page{i}");
20 tabControl.TabPages.Add(tabPage);
21
22 tabPage.Controls.Add(new TextBox { Name = "textBox", });
23 var button = new Button() { Text = "OK", Location = new Point(0, 30), };
24 button.Click += Button_Click;
25 tabPage.Controls.Add(button);
26 }
27 }
28
29 private void TabControl_Deselecting(object sender, TabControlCancelEventArgs e)
30 {
31 if(e.TabPage.Tag == null) // OK押してなければ。。。
32 {
33 MessageBox.Show("OKボタンを押下していません");
34 //e.Cancel = true; // ページ移動をキャンセルするなら
35 }
36 }
37
38 private void Button_Click(object sender, EventArgs e)
39 {
40 if(sender is Button button)
41 {
42 var textBox = button.Parent.Controls["textBox"] as TextBox;
43 button.Parent.Tag = "OK"; // OK押したフラグ(Tagを使ったのには深い意味はない
44 }
45 }
46 }
47}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。