zoukankan      html  css  js  c++  java
  • vb.net继承、悬浮窗口、Form.show()方法

    1、继承

    之前也看过不少关于继承的概念,可是都是云里雾里,今天终于弄明白了。最为OOP的一个重要概念,理解了继承,对OOP也有了更好的理解。

    类的继承:假设有三个类:ClassA,ClassB,ClassC。ClassA的方法有走路,ClassB的方法有走路、吃饭,ClassC的方法有走路、吃饭、交男盆友。那么,通过ClassB继承于ClassA,ClassC继承于ClassB来实现的就很简单了,写好了ClassA,那么ClassB只需要再写吃饭,ClassC只需要再写交男盆友。

    基本程序的含义:

    Public Class Form1:Inherits System.Windows.Forms.Form
    
    End Class
    
    

    或者

    Pubic Class Form1
    Inherit System.Windows.Forms.Form
    End Class
    

         但是System.Window.Forms里有很多类,Form是在第七层。很多时候在没有表明继承于Form时,我们却能运行出窗体,这是因为VB.proj指定了一个首先运行的类--Form类。在运行这个类时会先运行 Public sub new() end sub 。就像运行项目时,先运行sub main()一样。

    以上主要是参考http://www.xker.com/page/e2007/0131/22031_2.html

    有的时候sub new()中会出现MyBase.New()。

    MyBase是提供了一种引用当前类实例的基类的方式。

    在MSDN中MyBase.New的解释是这样的:在派生类中,每个构造函数必须调用基类构造函数 (MyBase.New)。 如果该基类有一个可由派生类访问的不带参数的构造函数,则可以自动调用 MyBase.New 否则,基类构造函数必须带参数调用,而这无法自动执行。 在此情况下,每个派生类构造函数的第一个语句必须调用基类上的一个参数化构造函数,或在调用基类构造函数的派生类中调用另一个构造函数。

           简单的理解就是,如果父类(基类)没有New()方法时,系统会自动构建一个new函数,子类可以不写mybase.new,因为它也可以自动构建new函数;如果基类有一个不带参数的构造函数new(),那么子类也可以不写mabase.new;如果基类有一个带参数的构造函数new(a),那么子类必须写mybase.new(a)。

    这样做的主要原因是,vb.net默认的是构建函数是new(),如果基类中该构造函数带有参数,系统无法默认调用,必须我们自己声明。

    主要参考:http://topic.csdn.net/t/20031210/20/2550260.html

    2.VB.NET浮动窗口

         主要用到的是WeiFenLuo.winFormsUI.Docking.dll这个第三方开源控件。

      dockpanel 中提供了几个可用的类, 重要的有两个, 一是 DockPanel, 一是 DockContent, DockPanel 是从 panel 继承出来的, 用于提供可浮动的 dock 的子窗口进行浮动和 dock 的场所, DockContent 是从 form 类中继承出来的, 用于提供可浮动的窗口基类. 就是说: DockContent 对象可 以在 DockPanel 对象中任意贴边, 浮动, TAB 化等.

         使用过程如下: http://archive.cnblogs.com/a/2074480/

        问题1:  在修改窗体继承于DockContent时,会出现“类“Form1”指定的基类“BasePanel.Docking.DockContent”不能与它的其他分部类型之一的基类“System.Windows.Forms.Form”不同”的错误。正如上面所说,Form1默认继承于System.Windows.Forms.Form,而BasePanel.Docking.DockContent和System.Windows.Forms.Form是不同类型的类,所以不存在继承。所以要改变Form1.designer.vb中改变其默认的类为BasePanel.Docking.DockContent。

      问题2:“Invalid parent form. When using DockingMdi or SystemMdi document style, the DockPanel control must be the child control of the main MDI container form”解决:在添加dockpanel控件窗体中,把设置主窗体 IsMdiContainer=true,如果还有异常则设置主窗体dockpanel 的documentstyle :dockPanel.DocumentStyle = DocumentStyle.DockingSdi。

     3.Form.show()方法

    Form.show()                         向用户显示控件。

    Form.show(IWin32Windows)  向用户显示具有指定所有者的窗体。

  • 相关阅读:
    OpenCASCADE Chamfer 3D Basics
    OpenCASCADE Chamfer 2D
    .NetCore 连接 Oracle 数据库,直接C# 或者 ORM框架(EFCore、XPO)
    心内科疾病指南
    HttpClient 调用 RestAPI 接口的用法
    在 Blazor 应用中使用 DevExtreme widgets
    2021 最近一次检查甘油三脂,验证苯扎贝特的效果。
    紫鹊界本味湘菜,
    如何Rest接口获取网上的股票数据,有哪些资源?-- 推荐Tushare金融数据
    优秀常用的「资源搜索网站」,收藏
  • 原文地址:https://www.cnblogs.com/beileierhao/p/2605689.html
Copyright © 2011-2022 走看看