c# 火狐浏览器怎么嵌入窗体中_C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子...

C#WinForm父级窗体内Panel容器中嵌入子窗体、程序主窗体设计例子

在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点

主窗体窗体采用前面一篇博客设计扁平化窗体

主要思路

this.IsMdiContainer=true;//设置父窗体是容器

Son mySon=new Son();//实例化子窗体

mySon.MdiParent=this;//设置窗体的父子关系

mySon.Parent=pnl1;//设置子窗体的容器为父窗体中的Panel

mySon.Show();//显示子窗体,此句很重要,否则子窗体不会显示

窗体设计上中下结构,最顶部是导航栏,其次是Top窗体部分、中间是Center内容部分、最底部是bottom导航面板

可以专门写一个方法做显示窗体

///

/// 显示窗体

///

///

///

public void ShowForm(System.Windows.Forms.Panel panel, System.Windows.Forms.Form frm)

{

lock (this)

{

try

{

if (this.currentForm != null && this.currentForm == frm)

{

return;

}

else if (this.currentForm != null)

{

if (this.ActiveMdiChild != null)

{

this.ActiveMdiChild.Hide();

}

}

this.currentForm = frm;

frm.TopLevel = false;

frm.MdiParent = this;

panel.Controls.Clear();

panel.Controls.Add(frm);

frm.Show();

frm.Dock = System.Windows.Forms.DockStyle.Fill;

this.Refresh();

foreach (Control item in frm.Controls)

{

item.Focus();

break;

}

}

catch (System.Exception ex)

{

//

}

}

}

子窗体静态字段

///

/// 子窗体界面单例元素

///

public static Form1 form1 = null;

public static Form2 form2 = null;

public static Form3 form3 = null;

public static Form4 form4 = null;

public static Form5 form5 = null;

构造初始化窗体 这里每一个窗体都是一个单例保证窗体的唯一性

//实例化子窗体界面

form1 = Form1.GetIntance;

form2 = Form2.GetIntance;

form3 = Form3.GetIntance;

form4 = Form4.GetIntance;

form5 = Form5.GetIntance;

窗体单例

private static MainForm formInstance;

public static MainForm GetIntance

{

get

{

if (formInstance != null)

{

return formInstance;

}

else

{

formInstance = new MainForm();

return formInstance;

}

}

}

初始化按钮状态

private bool initButton()

{

try

{

this.button1.BackColor = Color.FromArgb(, , );

this.button2.BackColor = Color.FromArgb(, , );

this.button3.BackColor = Color.FromArgb(, , );

this.button4.BackColor = Color.FromArgb(, , );

this.button5.BackColor = Color.FromArgb(, , );

this.button6.BackColor = Color.FromArgb(, , );

this.button7.BackColor = Color.FromArgb(, , );

this.button8.BackColor = Color.FromArgb(, , );

this.button9.BackColor = Color.FromArgb(, , );

this.button10.BackColor = Color.FromArgb(, , );

this.button11.BackColor = Color.FromArgb(, , );

}

catch (Exception ex)

{

return false;

}

return true;

}

导航按钮单击切换事件

private void button1_Click(object sender, EventArgs e)

{

try

{

this.initButton();

this.button1.BackColor = Color.FromArgb(, , );

Monitor.Enter(this.lockObj);

if (!formSwitchFlag)

{

formSwitchFlag = true;

this.ShowForm(pnlCenter,form1);

formSwitchFlag = false;

}

else

{

return;

}

}

catch (System.Exception ex)

{

//

}

finally

{

Monitor.Exit(this.lockObj);

}

}

最终展现效果图

复制到浏览器即可下载

或者博客留言,给出邮箱!基本一天内可以回复,就酱紫,爱你们呦,么么哒!O(∩_∩)O

Qt界面中嵌入其他exe程序的界面,使用Qt5

下面用一个小例子来演示如何在Qt的界面中嵌入其他exe程序的界面,最终效果如下图所示.本文参考了 http://blog.csdn.net/jiaoyaziyang/article/details/4 ...

接下来将介绍C#如何设置子窗体在主窗体中居中显示,本文提供详细的操作步骤,需要的朋友可以参考下

接下来将介绍C#如何设置子窗体在主窗体中居中显示,本文提供详细的操作步骤,需要的朋友可以参考下 其实表面上看是很简单的 开始吧,现在有两个窗体Form1主窗体,Form2子窗体 而且我相信大部分人都会 ...

wpf 子窗体调用主窗体中函数的实现

子窗体(Win_Set): MainWindow m;                m = (MainWindow)this.Owner;                m.showText(&qu ...

c#在主窗体panel 容器内嵌入另一个窗体(子窗体)的实现

主窗体:  子窗体: 把子窗体嵌入到主窗体的panel 右侧中: 代码: { public MainForm() { InitializeComponent(); } private void Clo ...

WPF中嵌入普通Win32程序的方法

公司现在在研发基于.Net中WPF技术的产品,由于要兼容旧有产品,比如一些旧有的Win32程序.第三方的Win32程序等等,还要实现自动登录这些外部Win32程序,因此必须能够将这些程序整合到我们的系 ...

Docker容器中安装新的程序

在容器里面安装一个简单的程序(ping). 之前下载的是ubuntu的镜像,则可以使用ubuntu的apt-get命令来安装ping程序:apt-get install -y ping. $docke ...

Unity容器中AOP应用示例程序

转发请注明出处:https://www.cnblogs.com/zhiyong-ITNote/p/9127001.html 实在没有找到Unity容器的AOP应用程序示例的说明,在微软官网找到了教程( ...

2017-11-29 由runnable说起Android中的子线程和主线程

1.首先纠正一个观点,就是runnable运行在子线程中是错误的观念.runnable只是创建了一个执行任务的对象,但是它本身并不会创建一个新的子线程,Runable只是给你接口让你实现工作线程的工作 ...

C#设置窗体中的窗体随主窗体大小变化而变化

form2 f=new form2(); f.Size=this.Size; f.Location=this.Location; f.showdialog(); 作者:耑新新,发布于  博客园 转载请 ...

随机推荐

JS验证图片格式和大小并预览

用于上传图片的js验证:

使用PHP的CURL模拟POST采集开了viewstate的asp.net网页数据

用.NET做的网站如果做成POST提交方式,且开了viewstate的话,采集起来有点小繁琐,在此跟大家分享一下做法. 采的难点是必須先取得表單裏面的viewstate和datavalidtion兩個 ...

tomcat免安装版注册为系统服务

环境: OS:windows7_64bit JDK:jdk1.6_64bit tomcat:apache-tomcat-7.0.61-windows-x64 1.修改tomcat/bin/servic ...

hdu 4707 Pet hdu 2013 Asia Regional Online —— Warmup

一道简单的搜索题目,建一个树,根节点是 0 ,连接的两个节点的距离是 1 ,求 到 根节点长度是2的节点的个数. #include #include

Gradle创建项目(IntelliJ IDEA)

创建Gradle项目 步骤一: 步骤二: 步骤三: 步骤四: 步骤五: 此时, 项目已经建好, 如果是第一次使用, 或者本地没有该版本的Gradle时, 就会触发下载.如图所示. 点击红色方框中标识的 ...

采用ADM2483磁隔离器让RS485接口更简单更安全

采用ADM2483磁隔离器让RS485接口更简单更安全 摘要:本文介绍RS485的特点及应用,指出了普通RS485接口易损坏的问题,针对存在的问题介绍了以ADM2483为核心的磁隔离解决方案. 关键词 ...

oracle 中对查询出来的数据进行切割、截取等操作

oracle 中对查询出来的数据进行切割.截取等操作 最近遇到一个问题,需要把一个带有,的字符串拆分成多行.通过查询资料,这个操作需要使用以下2个关键知识: 1. REGEXP_SUBSTR函数 这个 ...

lumion材质系统室内渲染6.3

材质系统是对于导入的模型,而不对自带的模型起作用.自带的模型有的能改变属性. 点击“材质”点击墙,出来材质库.为墙体赋予一种材质, 完成后点击保存,就可以保存了.然后给窗户添加玻璃材质. 可以看到墙, ...

在Linux添加定时任务删除5天前的日志文件

利用shell脚本自动清理,脚本如下 1.删除文件命令: find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 实例命令: fin ...

Hadoop-3.0.2 覆盖源代码生效

一.需求背景 基于业务需求,需要修改hadoop源码,将局部源代码修改后,放在自己的工程目录下,由于其相同的路径,想要覆盖掉源码对应部分 二.环境背景 IDEA下,编辑MapReduce任务,打包提交 ...

你可能感兴趣的:(c#,火狐浏览器怎么嵌入窗体中)