C# 多窗体显示(MDI)

发布时间:2026/10/31 10:42:16
C# 多窗体显示(MDI) 一、winform中显示子窗体传统方式1.1 示例代码假如主窗体为MainForm,有三个子窗体分别是Form1Form2Form3public partial class MainForm : Form { public MainForm() { InitializeComponent(); } Form1 form1 new Form1(); //子窗体1 Form2 form2 new Form2(); //子窗体2 Form3 form3 new Form3(); //子窗体3 private void MainForm_Load(object sender, EventArgs e) //主窗体加载事件 { ShowForm(form3); //将窗体加载至panle控件中 ShowForm(form2); ShowForm(form1); } private void ShowForm(Form frm) //显示子窗体 { if (!splitContainer1.Panel2.Controls.Contains(frm)) { frm.TopLevel false; //窗体是否为顶级窗体 frm.FormBorderStyle FormBorderStyle.None; //设置窗体无边框 // frm.Dock DockStyle.Fill; //设置填充方式为充满 frm.Parent this.splitContainer1.Panel2; //设置父窗体 随业务逻辑变动 splitContainer1.Panel2.Controls.Add(frm); frm.Show(); //打开窗体 frm.BringToFront(); //将控件显示最前 } else { frm.BringToFront(); } } private void btnShowForm1_Click(object sender, EventArgs e) //切换子窗体1 { ShowForm(form1); BackColorSet(((System.Windows.Forms.Button)sender).Text); } private void btnShowForm2_Click(object sender, EventArgs e) //切换子窗体2 { ShowForm(form2); BackColorSet(((System.Windows.Forms.Button)sender).Text); } private void btnShowForm3_Click(object sender, EventArgs e) //切换子窗体3 { ShowForm(form3); BackColorSet(((System.Windows.Forms.Button)sender).Text); } private void BackColorSet(string item) //设置按钮背景色 { //①现将所有的按钮统一赋值为同一种颜色 this.btnShowForm1.BackColor Color.Teal; this.btnShowForm2.BackColor Color.Teal; this.btnShowForm3.BackColor Color.Teal; //②根据传入的参数判断当前是哪个按钮按下 switch (item) { case 显示子窗体1: this.btnShowForm1.BackColor Color.Red; break; case 显示子窗体2: this.btnShowForm2.BackColor Color.Red; break; case 显示子窗体3: this.btnShowForm3.BackColor Color.Red; break; default: break; } } }1.2 运行结果二、winform中显示用户控件推荐方式2.1 示例代码假如主窗体为MainForm,有三个子用户控件分别是UserControl1UserControl2UserControl3namespace WinFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public UserControl1 f1; public UserControl2 f2; public UserControl3 f3; private void Form1_Load(object sender, EventArgs e) { f1 new UserControl1(); f2 new UserControl2(); f3 new UserControl3(); } private void button1_Click(object sender, EventArgs e) { f1.Dock DockStyle.Fill; f1.Show(); splitContainer1.Panel2.Controls.Clear(); splitContainer1.Panel2.Controls.Add(f1); } private void button2_Click(object sender, EventArgs e) { f2.Show(); splitContainer1.Panel2.Controls.Clear(); splitContainer1.Panel2.Controls.Add(f2); } private void button3_Click(object sender, EventArgs e) { f3.Show(); splitContainer1.Panel2.Controls.Clear(); splitContainer1.Panel2.Controls.Add(f3); } } }2.2 运行结果

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询