2025-12-31 09:43:35 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Data;
|
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
|
using System.Windows.Forms;
|
2025-12-31 17:26:27 +08:00
|
|
|
|
using System.IO;
|
|
|
|
|
|
using NPOI.SS.UserModel;
|
|
|
|
|
|
using NPOI.XSSF.UserModel;
|
|
|
|
|
|
using NPOI.SS.Util;
|
|
|
|
|
|
using NPOIBorderStyle = NPOI.SS.UserModel.BorderStyle;
|
|
|
|
|
|
using NPOIHorizontalAlignment = NPOI.SS.UserModel.HorizontalAlignment;
|
2025-12-31 09:43:35 +08:00
|
|
|
|
|
|
|
|
|
|
namespace WindowsFormsApp6
|
|
|
|
|
|
{
|
|
|
|
|
|
public partial class MainForm : Form
|
2025-12-31 17:26:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
private Form1 form1Instance;
|
|
|
|
|
|
private Form2 form2Instance;
|
|
|
|
|
|
private Form3 form3Instance;
|
|
|
|
|
|
private System.Windows.Forms.Timer clockTimer;
|
2025-12-31 09:43:35 +08:00
|
|
|
|
|
|
|
|
|
|
public MainForm()
|
|
|
|
|
|
{
|
|
|
|
|
|
InitializeComponent();
|
2025-12-31 17:26:27 +08:00
|
|
|
|
InitializeClockTimer();
|
|
|
|
|
|
InitializeTabControl();
|
|
|
|
|
|
InitializeEmbeddedForms();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void InitializeClockTimer()
|
|
|
|
|
|
{
|
|
|
|
|
|
clockTimer = new System.Windows.Forms.Timer();
|
|
|
|
|
|
clockTimer.Interval = 1000;
|
|
|
|
|
|
clockTimer.Tick += (s, e) => label2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
clockTimer.Start();
|
|
|
|
|
|
}
|
2025-12-31 09:43:35 +08:00
|
|
|
|
|
2025-12-31 17:26:27 +08:00
|
|
|
|
private void InitializeTabControl()
|
|
|
|
|
|
{
|
|
|
|
|
|
tabControl1.SelectedIndexChanged += TabControl1_SelectedIndexChanged;
|
|
|
|
|
|
}
|
2025-12-31 09:43:35 +08:00
|
|
|
|
|
2025-12-31 17:26:27 +08:00
|
|
|
|
private void TabControl1_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateTitleForCurrentTab();
|
2025-12-31 17:41:01 +08:00
|
|
|
|
|
|
|
|
|
|
// 根据选中的 Tab 显示/隐藏切换布局按钮
|
|
|
|
|
|
// 只有在 Form3 (Tab 2, index=2) 时显示切换按钮
|
|
|
|
|
|
buttonToggleLayout.Visible = (tabControl1.SelectedIndex == 2);
|
|
|
|
|
|
|
|
|
|
|
|
// 更新切换按钮的文本
|
|
|
|
|
|
if (tabControl1.SelectedIndex == 2 && form3Instance != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateToggleButtonText();
|
|
|
|
|
|
}
|
2025-12-31 09:43:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 17:26:27 +08:00
|
|
|
|
private void UpdateTitleForCurrentTab()
|
2025-12-31 09:43:35 +08:00
|
|
|
|
{
|
2025-12-31 17:26:27 +08:00
|
|
|
|
switch (tabControl1.SelectedIndex)
|
2025-12-31 09:43:35 +08:00
|
|
|
|
{
|
2025-12-31 17:26:27 +08:00
|
|
|
|
case 0:
|
|
|
|
|
|
label1.Text = " 液体吸收时间测试报告";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
label1.Text = " 液体吸收量测试报告";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
label1.Text = " 液体芯吸速率测试报告";
|
|
|
|
|
|
break;
|
2025-12-31 09:43:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 17:26:27 +08:00
|
|
|
|
private void InitializeEmbeddedForms()
|
2025-12-31 09:43:35 +08:00
|
|
|
|
{
|
2025-12-31 17:26:27 +08:00
|
|
|
|
form1Instance = new Form1();
|
|
|
|
|
|
form1Instance.TopLevel = false;
|
|
|
|
|
|
form1Instance.FormBorderStyle = FormBorderStyle.None;
|
|
|
|
|
|
form1Instance.Dock = DockStyle.Fill;
|
|
|
|
|
|
|
|
|
|
|
|
Panel panel1 = new Panel();
|
|
|
|
|
|
panel1.Dock = DockStyle.Fill;
|
|
|
|
|
|
panel1.Controls.Add(form1Instance.Controls["tableLayoutPanel1"].Controls["panel3"]);
|
|
|
|
|
|
tabPage1.Controls.Add(panel1);
|
|
|
|
|
|
form1Instance.Show();
|
|
|
|
|
|
|
|
|
|
|
|
form2Instance = new Form2();
|
|
|
|
|
|
form2Instance.TopLevel = false;
|
|
|
|
|
|
form2Instance.FormBorderStyle = FormBorderStyle.None;
|
|
|
|
|
|
form2Instance.Dock = DockStyle.Fill;
|
|
|
|
|
|
|
|
|
|
|
|
Panel panel2 = new Panel();
|
|
|
|
|
|
panel2.Dock = DockStyle.Fill;
|
|
|
|
|
|
panel2.Controls.Add(form2Instance.Controls["tableLayoutPanel1"].Controls["panel3"]);
|
|
|
|
|
|
tabPage2.Controls.Add(panel2);
|
|
|
|
|
|
form2Instance.Show();
|
|
|
|
|
|
|
|
|
|
|
|
form3Instance = new Form3();
|
|
|
|
|
|
form3Instance.TopLevel = false;
|
|
|
|
|
|
form3Instance.FormBorderStyle = FormBorderStyle.None;
|
|
|
|
|
|
form3Instance.Dock = DockStyle.Fill;
|
|
|
|
|
|
|
|
|
|
|
|
Panel panel3 = new Panel();
|
|
|
|
|
|
panel3.Dock = DockStyle.Fill;
|
|
|
|
|
|
panel3.Controls.Add(form3Instance.Controls["tableLayoutPanel1"].Controls["panel3"]);
|
|
|
|
|
|
tabPage3.Controls.Add(panel3);
|
|
|
|
|
|
form3Instance.Show();
|
2025-12-31 09:43:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 17:26:27 +08:00
|
|
|
|
private void buttonPrint_Click(object sender, EventArgs e)
|
2025-12-31 09:43:35 +08:00
|
|
|
|
{
|
2025-12-31 17:26:27 +08:00
|
|
|
|
MessageBox.Show("打印功能开发中", "提示");
|
2025-12-31 09:43:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 17:26:27 +08:00
|
|
|
|
private void buttonExport_Click(object sender, EventArgs e)
|
2025-12-31 09:43:35 +08:00
|
|
|
|
{
|
2025-12-31 17:26:27 +08:00
|
|
|
|
SaveFileDialog saveFileDialog = new SaveFileDialog
|
|
|
|
|
|
{
|
|
|
|
|
|
Filter = "Excel 文件 (*.xlsx)|*.xlsx",
|
|
|
|
|
|
FileName = $"测试报告_{DateTime.Now:yyyyMMdd_HHmmss}",
|
|
|
|
|
|
Title = "导出整合报告"
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
|
|
|
|
|
{
|
|
|
|
|
|
ExportIntegratedReport(saveFileDialog.FileName);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void button5_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (tabControl1.SelectedIndex)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
form1Instance.GenerateMockData();
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
form2Instance.GenerateMockData();
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
form3Instance.GenerateMockData();
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 17:41:01 +08:00
|
|
|
|
private void buttonToggleLayout_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (form3Instance != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 调用 Form3 的公共切换方法
|
|
|
|
|
|
form3Instance.ToggleTableLayout();
|
|
|
|
|
|
|
|
|
|
|
|
// 更新按钮文本
|
|
|
|
|
|
UpdateToggleButtonText();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 更新切换按钮的文本
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private void UpdateToggleButtonText()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (form3Instance != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 使用公共方法获取布局状态
|
|
|
|
|
|
bool isVertical = form3Instance.IsVerticalLayout();
|
|
|
|
|
|
buttonToggleLayout.Text = isVertical ? "🔄 横向布局" : "🔄 纵向布局";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 17:26:27 +08:00
|
|
|
|
private void ExportIntegratedReport(string filePath)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
IWorkbook workbook = new XSSFWorkbook();
|
|
|
|
|
|
CreateForm1Sheet(workbook);
|
|
|
|
|
|
CreateForm2Sheet(workbook);
|
|
|
|
|
|
CreateForm3Sheet(workbook);
|
|
|
|
|
|
|
|
|
|
|
|
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
|
|
|
|
|
|
{
|
|
|
|
|
|
workbook.Write(fs);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
MessageBox.Show($"导出成功:{filePath}", "成功");
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show($"导出失败:{ex.Message}", "错误");
|
|
|
|
|
|
}
|
2025-12-31 09:43:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-31 17:26:27 +08:00
|
|
|
|
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
2025-12-31 09:43:35 +08:00
|
|
|
|
{
|
2025-12-31 17:26:27 +08:00
|
|
|
|
clockTimer?.Stop();
|
|
|
|
|
|
clockTimer?.Dispose();
|
|
|
|
|
|
Application.Exit();
|
2025-12-31 09:43:35 +08:00
|
|
|
|
}
|
2025-12-31 17:26:27 +08:00
|
|
|
|
|
|
|
|
|
|
private void CreateForm1Sheet(IWorkbook workbook) { }
|
|
|
|
|
|
private void CreateForm2Sheet(IWorkbook workbook) { }
|
|
|
|
|
|
private void CreateForm3Sheet(IWorkbook workbook) { }
|
2025-12-31 09:43:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|