private int tabNum = 1;
private int sensorNum = 5;
private void InitializeUI()
{
// 创建右侧容器面板
Panel rightPanel = new Panel
{
Dock = DockStyle.Right,
Width = 300,
BackColor = SystemColors.ControlDark,
Parent = this
};
// 根据防区数量创建内容
if (tabNum > 1)
{
CreateTabbedContent(rightPanel);
}
else
{
CreateSingleTable(rightPanel);
}
}
private void CreateTabbedContent(Panel parent)
{
TabControl tabControl = new TabControl
{
Dock = DockStyle.Fill,
Parent = parent
};
// 表格1
TabPage tab1 = new TabPage("表格1");
tabControl.TabPages.Add(tab1);
CreateSingleTable(tab1);
// 表格2
TabPage tab2 = new TabPage("表格2");
tabControl.TabPages.Add(tab2);
CreateSingleTable(tab2);
}
private void CreateSingleTable(Control container)
{
DataGridView dgv = new DataGridView
{
Dock = DockStyle.Fill,
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
ScrollBars = ScrollBars.Vertical, // 最小化高度
AllowUserToAddRows = false, // 关键修复:禁止显示空白新行
RowHeadersVisible = false, // 关键修改:隐藏最左侧行头列
Parent = container
};
// 创建列
dgv.Columns.Add("LineOrder", "线序");
dgv.Columns.Add("Val1", "电压值");
DataGridViewCheckBoxColumn enableColumn = new DataGridViewCheckBoxColumn();
enableColumn.HeaderText = "在线";
dgv.Columns.Add(enableColumn);
// 动态行
for (int i = 1; i <= sensorNum; i++)
{
dgv.Rows.Add(i, i + "0", false);
}
// 自动调整行高
dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
private void Form1_Load(object sender, EventArgs e)
{
InitializeUI();
}
//修改后
private int tabNum = 2;
private int sensorNum = 5;
private void InitializeUI()
{
//panelTabs 是 一个panel
// 根据防区数量创建内容
if (tabNum > 1)
{
CreateTabbedContent(panelTabs);
}
else
{
CreateSingleTable(panelTabs);
}
}
private void CreateTabbedContent(Panel parent)
{
TabControl tabControl = new TabControl
{
Dock = DockStyle.Fill,
Parent = parent
};
// 表格1
TabPage tab1 = new TabPage("表格1");
tabControl.TabPages.Add(tab1);
CreateSingleTable(tab1);
// 表格2
TabPage tab2 = new TabPage("表格2");
tabControl.TabPages.Add(tab2);
CreateSingleTable(tab2);
}
private void CreateSingleTable(Control container)
{
DataGridView dgv = new DataGridView
{
Dock = DockStyle.Fill,
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
//ScrollBars = ScrollBars.Vertical, // 最小化高度 仅在需要时显示滚动条
ScrollBars = ScrollBars.None,
AllowUserToAddRows = false, // 关键修复:禁止显示空白新行
RowHeadersVisible = false, // 关键修改:隐藏最左侧行头列
BackgroundColor = container.BackColor, // 继承面板颜色
Parent = container
};
// 创建列
dgv.Columns.Add("LineOrder", "线序");
dgv.Columns.Add("Val1", "电压值");
DataGridViewCheckBoxColumn enableColumn = new DataGridViewCheckBoxColumn();
enableColumn.HeaderText = "在线";
dgv.Columns.Add(enableColumn);
// 动态行
for (int i = 1; i <= sensorNum; i++)
{
dgv.Rows.Add(i, i, false);
}
// 自动调整行高
dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
// 计算并设置表格高度(关键步骤)
//int headerHeight = dgv.ColumnHeadersHeight; // 列头高度
//int rowHeight = dgv.RowTemplate.Height; // 单行高度
int totalHeight = headerHeight + (rowHeight * 6);
//int totalHeight = headerHeight + (rowHeight * sensorNum);
//dgv.Height = totalHeight;
}