C# Dockpanel入门基础必看篇

一、引用:

1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1(此处默认为主窗体)。

2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Docking.dll。

3.设置Form1窗体属性IsMdiContainer:True。

4.工具箱—>右键—>选择项—>.net组件—>浏览—>weiFenLuo.winFormsUI.Docking.dll—>在工具箱出现dockPanel。

5.将dockPanel拖到窗体主窗体上,设置Dock属性,一般默认设置为:Fill。

二、设置停靠窗体:

1.新建一个WinForm窗体。

2.在代码中修改窗体继承于DockContent。如下:

using WeifenLuo.WinFormsUI.Docking;

public partial class Form2 : DockContent

3.在主窗体中显示停靠窗体。

在要显示停靠窗体的事件中写入以下代码:

Private void 事件名(){
  Form2 form2 = new Form2();
form2.Show(停靠的父容器,DockState.要停靠的方位);
}

三、设置窗体浮动:

1、设置需要浮动的窗体的Dock中的DockAreas属性。

四、关闭当前容器中的所有窗体

1、获取到当容器中的所有子窗体的个数:

dockPanel1.Contents.Count;

2、获取容器中的所有对象的数组,并将其转换为

IDockContent对象:

IDockContent content =(IDockContent)dockPanel1.Contents[index];

3、循环关闭:

for (int index = dockPanel1.Contents.Count;index > 0; index--)

{
 if(dockPanel1.Contents[index] isIDockContent)
  {
  IDockContent content =(IDockContent)dockPanel1.Contents[index];
  content.DockHandler.Close();}}

五、关闭除当前正在活动的子窗体之外得到所有子窗体:

1、获取当前正在活动的子窗体对象:

this.ActiveMdiChild;

2、遍历容器中的子窗体,并判断是否为当前正在活动的窗体,不是则关闭:

if (this.ActiveMdiChild != null)

   { //判断是否有子窗体
    foreach (Form f in this.MdiChildren)
    {//获取子窗体
      if (f != this.ActiveMdiChild) { f.Close(); }//判断是否为当前选定窗口
         }
   }

六、更改窗体风格:

1、下载要设置风格的资源库或相关控件。例如: vS2005Theme、vS2003Theme、vS2012LightTheme;

然后将要更改风格的DockPanel控件的Theme属性设置为相应的控件名。例:

dockPanel1.Theme = vS2003Theme2;

如果要更改主窗体的风格,则要下载vS2012ToolStripExtender控件。

vS2012ToolStripExtender1.SetEnableVS2012Style(要更改的控件, true);

七、更改窗体的样式:

1.获取并记录当前样式:

DocumentStyle oldStyle = dockPanel1.DocumentStyle;//记录旧的样式

2.定义新样式对象并为其赋值要更改的样式:

DocumentStyle newStyle=要更改的样式(DocumentStyle.样式);

3、设置新的样式:

要更改样式的窗体.

DocumentStyle=newStyle;

八、记录当前窗体布局:

1.定义一个正在窗体关闭事件:

private void MainForm_FormClosing(object sender FormClosingEventArgse){
..........

}

2.在事件在写入记录当前窗体布局的代码,如下:

configFile =Path.Combine(Path.GetDirectoryName(Application.ExecutablePath),"DockPanel.config");

dockPanel1.SaveAsXml(configFile);

3、如果下载打开窗体需要加载上一次的退出时的布局,则在窗体加载事件中写入以下代码:

configFile =Path.Combine(Path.GetDirectoryName(Application.ExecutablePath),"DockPanel.config");

   if(File.Exists(configFile))
   {
    dockPanel1.LoadFromXml(configFile, ddc);
   }

补充知识:C#使用as关键字将对象转换为指定类型

在C#的编程开发过程中,很多时候涉及到数据类型的转换,可使用强制转换的方式,不过强制转换数据类型有时候会抛出程序异常错误,可以使用as关键字来进行类型的转换,如果转换成功将返回转换后的对象,如果转换不成功则不会抛出异常而是返回NULL。

如将A类型的对象modelA转换为B类型的对象,可使用下列语句操作:

var entityB=modelA as B;

如果entityB不为空,则转换成功,如果entityB的值为空,则转换不成功。

以上这篇C# Dockpanel入门基础必看篇就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C#调用7z实现文件的压缩与解压

    1.关于7z 首先在这里先介绍一下7z压缩软件,7z是一种主流的 压缩格式,它拥有极高的压缩比.在计算机科学中,7z是一种可以使用多种压缩算法进行数据压缩的档案格式.主要有以下特点: 来源且模块化的组件结构 最高的压缩比 强大的AES-256加密 可更改配置的压缩算法 支持操大文件 支持多线程压缩 具有多种压缩文件格式 2.解压缩实现代码 实现对文件的解压缩方法是通过cmd命令,调用7z程式通过cmd命令实现对文件进行解压和压缩的操作,具体实现代码如下: 压缩代码 压缩的cmd命令:"7Z a

  • c#  Linq distinct不会调用Equals方法详解

    我有以下课程 public class ModInfo : IEquatable<ModInfo> { public int ID { get; set; } public string MD5 { get; set; } public bool Equals(ModInfo other) { return other.MD5.Equals(MD5); } public override int GetHashCode() { return MD5.GetHashCode(); } } 我使用

  • c# base64转字符串实例

    转成 Base64 形式的 System.String: string a = "base64字符串与普通字符串互转"; byte[] b = System.Text.Encoding.Default.GetBytes(a); //转成 Base64 形式的 System.String a = Convert.ToBase64String(b); Response.Write(a); 转回到原来的 System.String: byte[] c = Convert.FromBase64

  • 完美解决c# distinct不好用的问题

    当一个结合中想根据某一个字段做去重方法时使用以下代码 IQueryable 继承自IEnumerable 先举例: #region linq to object List<People> peopleList = new List<People>(); peopleList.Add(new People { UserName = "zzl", Email = "1" }); peopleList.Add(new People { UserNa

  • C# 实现Distinct将对象按条件去重

    平时,我们将c#中的Distinct大多用于对数组去重,一般数组为基础的数据类型,例如 int,string.也可以用于对象去重,我们看看C#对Distinct方法的定义: 有重载,第一个参数都加了this,是拓展方法,有关拓展方法,请百度了解. 下面我们来研究下Distinct的对象去重,假设我们现在有一个People类: public class People { public int ID { get; set; } /// <summary> /// 姓名 /// </summa

  • C# Dockpanel入门基础必看篇

    一.引用: 1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1(此处默认为主窗体). 2.引用->添加引用->浏览->weiFenLuo.winFormsUI.Docking.dll. 3.设置Form1窗体属性IsMdiContainer:True. 4.工具箱->右键->选择项->.net组件->浏览->weiFenLuo.winFormsUI.Docking.dll->在工具箱出现dockPanel. 5.将dockPan

  • ActiveMQ简单入门(新手必看篇)

    一.创建一个简单的Hello World案例 首先需要导入activemq-all-5.14.5.jar包,写生产端: package com.ietree.mq.helloworld; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.MessageProduc

  • JavaScript_object基础入门(必看篇)

    之前写Java时老是有点蒙,大部分都是用jQuery,但原理还不是很清楚,最近一段时间在系统的学习JavaScript,有什么问题或错误请指出,多谢..................... Object所有类的基础类 var obj = new Object(); var obj = {}; //实例化对象 给对象设置属性分为两种: 1.使用直接量的方式:对象.属性/方法,这种方式直观.易懂 obj.name = '张三'; obj.age = 20; obj.sex = '男'; obj.s

  • JavaScript基础教程——入门必看篇

    JavaScript他是一种描述性语言,其实他并不难学,只要用心学,一定会学好,我相信大家在看这篇文章的时候,一定也学过HTML吧,使用JavaScript就是为了能和网页有更好的交互,下面切入主题. 一. JavaScript 1.什么是JavaScript JavaScript是一种描述性语言,也是一种基于对象(Object)和事件驱动(Event Driven)的,并具有安全性的脚本语言. 2.JavaScript的特点 JavaScript主要用来向HTML页面添加交互行为. JavaS

  • 新手如何快速入门Python(菜鸟必看篇)

    学习任何一门语言都是从入门(1年左右),通过不间断练习达到熟练水准(3到5年),少数人最终能精通语言,成为执牛耳者,他们是金字塔的最顶层.虽然万事开头难,但好的开始是成功的一半,今天这篇文章就来谈谈如何开始入门Python.只要方向对了,就不怕路远. 设定目标 当你决定入门 Python 时,需要一个清晰且短期内可实现的目标,比如通过学习找一份初级程序员工作,目标明确后,你需要了解企业对初级程序员有哪些技能要求,下面是我从拉勾网找的一个初级 Python 工程师的任职要求: 1.熟悉 Pytho

  • 新入门node.js必须要知道的概念(必看篇)

    一.对于一个刚入门node.js的朋友来说,一定要了解一些基础概念: 今年我正式进入社会后,发现自己所知道的IT方面的知识,真的只是牛毛,原来人外有人,山外有山,还需要继续努力.下面是一些我的自学习心得,发出来和大家一起分享: web的开发原理: 1.C/S模式(客户端/服务器)比如:QQ.微信等要先下载客户端的软件都可以称为c/s模式,它是有专门的客户端程序. 2.B/S模式(浏览器/服务器)比如:网页游戏.它的优点是:不需要下载客户端应用.缺点是:浏览器本身,因为有些浏览器不支持. 下面是依

  • PowerShell管道入门必看篇(管道例子大全)

    PowerShell的一个重中之重的功能就是管道(pipeline),本文从浅入深,一步一步详解管道的使用方法和例子,来看看有没有你所不知道的吧,如果全知道,恭喜你已经很厉害啦--适用于所有PowerShell应用小白与技术老鸟.另外欢迎各位技术大牛来补充讨论学习~ 1. 管道(pipeline)是什么 在Shell中一个重要的基本概念就是管道(pipeline),即在一组命令中,输出的命令结果成为下一个命令的输入参数.管道的概念与真实生活中的生产线比较相似:在不同的生产环节进行连续的再加工,如

  • AugularJS从入门到实践(必看篇)

    前 言 前端 AngularJS是为了克服HTML在构建应用上的不足而设计的.(引用百度百科) AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷.AngularJS通过使用我们称为指令(directives)的结构,让浏览器能够识别新的语法.(引用百度百科) 例如: 使用双大括号{{}}语法进行数据绑定: 使用DOM控制结构来实现迭代或者隐藏DOM片段: 支持表单和表单的验证: 能将逻辑代码关联到相关的DOM元素上: 能将HTML分组成可重用的组件. 本篇学习主要

  • java基础之数组常用操作总结(必看篇)

    常用的对数组进行的操作 1.求数组中最大值,最小值 思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大,则把这个值赋给max.最小值同样 public class TestArray{ public static void main(String[] args){ int[] arr={23,45,234,576,34,87,34,12,67}; int max=arr[0]; int min=arr[0]; for(int i=0;i<arr.leng

  • Javascript基础学习笔记(菜鸟必看篇)

    什么是变量? 变量是用于存储信息的容器 变量的声明 语法: var 变量名 变量名 = 值; 变量要先声明再赋值 变量可以重复赋值 变量的命名规则 变量必须以字母开头: 变量也能以$和_符号开头(不过我们不推荐这么做): 变量名称对大小写敏感(a和A是不同的变量). 语句 语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾. 有个好的编码习惯,都要以 ; 结尾 数据类型 在JavaScript中,一段信息就是一个值(value).值有不同的类型,大家最熟悉的类型是数字.字符串(strin

随机推荐