精华内容
下载资源
问答
  • 使用vb6.0的开发平台怎么实现窗体启动初始化加载控件对控件类型的列举,列举控件后如何不依赖控件名完成对控件属性的调用操作?
  • Vb.net WinForm如何开发一个登录界面

    千次阅读 2018-11-01 10:46:56
    我简单讲一下,大家知道,WinFrom程序有一个 Sub Main入口,C#会在初始化项目时自动创建,但是为什么VB.net不创建呢。 这是因为默认项目中,VB.Net的编译器为你自动创建了入口,你不需要用代码实现。 那我要怎样才能...

    Vb.net WinForm的小伙伴在创建登录界面时有个疑问,为什么我关闭登录窗体,然后再打开业务窗体时,程序自动退出了呢。
    我简单讲一下,大家知道,WinFrom程序有一个 Sub Main入口,C#会在初始化项目时自动创建,但是为什么VB.net不创建呢。
    这是因为默认项目中,VB.Net的编译器为你自动创建了入口,你不需要用代码实现。
    那我要怎样才能实现关闭登录窗体后进入业务窗体呢,有以下两种方式:

    • 方式一:打开My Project-应用程序,将关键模式修改为“当最后一个窗体关闭时”。
      在这里插入图片描述
    • 方式二:新建模块写入以下代码(注意打开窗体不是用的Show,用的是Application.Run1)
        Public Sub Main()
            Application.EnableVisualStyles()
            Application.SetCompatibleTextRenderingDefault(False)
            Dim NF As New Form1()
            Application.Run(NF)
            If NF.登录成功 Then
                Application.Run(New Form2())
            End If
        End Sub
    

    打开My Project-应用程序,去掉启用应用程序框架勾选,启动对象选择Sub Main.。


    1. Application.Run:在当前线程上开始运行标准应用程序消息循环,并使指定窗体可见。以该模式打开窗体后,该线程窗体将持续响应消息循环,该线程只会随着窗体的关闭而关闭。一个线程只有存在一个消息循环。后面我再开专题为大家演示怎么在分线程下面创建属于自己线程的UI窗体。
      分线程窗体的好处:小伙伴们可以在不启用分线程的方式下,主线程计算长耗时算法时卡死后任然可以显示进度条。 ↩︎

    展开全文
  • VB.NET】基础汇总

    热门讨论 2018-04-24 21:37:12
    A.0 如何在VS中写VB.NET代码 请走传送门 A.1 构造和析构 Public Sub New()  MyBase.New() ... '在 InitializeComponent() 调用之后添加任何初始化 End Sub '窗体重写处置以清理组件列表。...

    A.0 如何在VS中写VB.NET代码
    请走传送门


    A.1 构造和析构

    Public Sub New()
        MyBase.New()
        '该调用是 Windows 窗体设计器所必需的。
        InitializeComponent()
         '在 InitializeComponent() 调用之后添加任何初始化
    End Sub
    
    '窗体重写处置以清理组件列表。
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing Then
         If Not (components Is Nothing) Then
              components.Dispose()
         End If
       End If
       MyBase.Dispose(disposing)
    End Sub

    构造函数:
    New()
    MyBase.New() 基类显式调用
    MyBase 是System.Windows.Forms.Form类的实例化对象

    析构函数:
    Dispose()
    Form.Dispose方法重写自Control.Dispose方法
    释放由Control占用 的非托管资源,还可以另外再释放托管资源.


    A2. 共享成员

    敲黑板,重点,此处是重点。

    VB.NET现在是支持真正的面向对象编程,可以继承、使用多态、共享成员和静态成员。

    共享成员就是在所有类和所定义派生类的实例之间共享的方法、属性、字段和事件。所有使用类创建的对象都可以访问相同的数据、共享实现过程 ,并且收到相同的激发事件。

    Private Shared m_vb6FormDefInstance As Form1 
     
    Public Shared Property DefInstance() As Form1 
     
      Get 
     
          If m_vb6FormDefInstance Is Nothing OrElse _ 
              m_vb6FormDefInstance.IsDisposed Then   
              ‘判断窗体实例是否存在 
     
            m_vb6FormDefInstance = New Form1()   
     
        End If 
     
        DefInstance = m_vb6FormDefInstance 
     
       End Get 
     
       Set(ByVal Value As Form1) 
     
         m_vb6FormDefInstance = Value 
     
       End Set 
     
    End Property

    有两个要点:

    第一个是共享成员如果是方法或属性,我们不用创建实例就可以直接用 ‘类名.共享成员’的方法进行调用;
    第二个要点,共享字段是唯一的。


    A3. 类和结构

    结构与类有什么相似之处与不同之处吗 ?

    相似之处:它们都含有成员,包括构造函数、方法、属性、字段、常量、枚举和事件。都可以实现接口,都有共享的构造函数。

    不同之处:内存分配大不同。结构是值类型,而类是引用类型。因此,结构使用堆栈分配,类使用堆分配。

    Structure SHenry 
     
      Public x, y As Integer 
     
      Public Sub New(ByVal x As Integer, ByVal y As Integer) 
     
        Me.x = x 
     
        Me.y = y 
     
      End Sub 
     
    End Structure 
     
    Sub main() 
     
      Dim H1 As SHenry = New SHenry() 
     
      Dim H2 As SHenry = New SHenry(2, 1) 
     
    End Sub

    我们通过声明Inherits关键字,来标识该类的基类是谁,如果没有标识的类,比如CBaseHenry,VB.Net就会视其为派生自Object基类,这是种隐式继承,和结构是隐式继承自ValueType 类的方式是一样的。

    Public Class CDerivedHenry 
     
      Inherits CBaseHenry 
     
      Sub New() 
     
        MyBase.New() ‘注意:这句话要放在sub内的第一句 
     
        Console.WriteLine("派生类的构造") 
     
      End Sub 
     
      Protected Overrides Sub Finalize() 
     
        Console.WriteLine("派生类的析构") 
     
        MyBase.Finalize() 
     
      End Sub 
     
      Public Overrides Function GetY(ByVal x As Integer) As Integer 
     
        Me.y = x * 10 ‘protected类型的me.y却可以在派生类中使用 
     
        Console.WriteLine("派生类的GetY方法,结果为:" & Me.y) 
     
        Return Me.y 
     
      End Function 
     
      Public Sub NewY() 
     
        Console.WriteLine("派生类的新方法") 
     
      End Sub 
     
    End Class

    A4. 重载和隐藏

    重写,就是刚才举的示例中,在派生类中用Overrides重新编写有Overridable标识的基类的方法或属性;重载么, 就是我们可以用同样的名称,在调用时可以适应不同参数类型的要求。我们用 overloads方式,隐藏了基类的同名方法。以防用户发生混淆。

    隐藏有两种情况:
    1.用局部变量x在方法中隐藏了全局变量x。
    2.通过继承来隐藏,方法么,除了刚才用的overloads,还可以用Shadows关键字来实现。

    Public Class CBaseHenry 
     
      Public Sub oldY() 
     
        Console.WriteLine("基类的oldY方法") 
     
      End Sub 
     
    End Class 
     
    Public Class CDerivedHenry 
     
      Inherits CBaseHenry 
     
      Public Shadows Sub oldY(ByVal j As Integer) 
     
        Console.WriteLine("派生类的oldY方法") 
     
      End Sub 
     
    End Class 
     
    Public Sub Main() 
     
      Dim obj As CDerivedHenry = New CDerivedHenry()
      ... ... (之后的代码略,因为不重要)

    隐藏适用于任何元素类型,你可以在派生类中 用Public Shadows oldY as Integer来隐藏基类的oldY()方法;而重写只能适用 于方法与属性,而且声明参数与修饰符都要求完全一致。

    当派生类又派生出一个子类时,重写与隐藏都会被继承下去。当然,如果在派生类中是用private来修饰Shadows成员的话,它的子类就会继承它基类的成员了。


    A5. 脆弱的基类

    如果我在基类中更改了成员的数据类型,以及那些允许重写的那些方法和属性, 那派生类及其子类还能正常工作吗?尤其是当一个团队中的多个开发人员一起来 创作基类和派生类时,就更是要命了。很多情况下,大家可能已经把基类和一些 派生类编译成二进制形式进行提交了。更改基类,重新编译再分布,会牵一发而动全身,导致项目的崩溃。所以我们把这叫做‘脆弱的基类’。也就是说,它是整个工程中最薄弱最致命的环节。

    私以为可以采用依赖倒转原则,应该依赖于抽象而不是依赖于细节编程。

    一般来说,是有这样几个准则需要把握的:

    第一,遵循先通用,再专用的原则。先设计好层次结构中每一级别的类中的通用部分,也 就是提供给派生类继承的成员和标识为Public的成员;

    第二,在定义数据 类型和存储区时要有预留量,以避免以后更改困难。例如,即使当前数据可能仅 需要Integer类型就够了,在设计时我们使用 Long 类型的变量。当然,最好能物 尽其用,也不要盲目放大;

    第三,在一个项目中,必须统一管理与分配团队中使用的所有的命名,以减少命名冲突,这一点其实事关重大;

    第四, 要使用提供可行的最低访问权限的访问修饰符声明类成员。内部类成员应声明为 Private;仅在类内与派生类才需要的成员应标记为Protected;Friend 数据成员 可以从类的外部访问,但仅限于该模块是定义该类的项目的一个组成部分;使用 Public标识的成员,只能是实例化时真正需要的内容,而且经常用在类层次结构的底部。


    学习笔记未完待续,很多知识点只是搬运工,博主表示并不懂,后期进行整理,添加自己的理解。
    您的评论是我持续写文的动力之一。

    展开全文
  • 微软 VB2010 源码包

    2013-05-22 02:21:18
    CollectionInitializersSample:演示如何使用集合初始值设定项语法创建数组和集合 CovarianceSample:演示在声明泛型接口类型参数时使用的协变/逆变功能以及“In”和“Out”关键字 CustomExceptions:演示自定义...
  • VB课程设计俄罗斯方块

    热门讨论 2011-02-25 10:46:55
    Vb是microsoft公司于1991年退出的windows应用程序开发工具visual意思是“可视的”。在它刚推出来时,自身还存在一些缺陷,功能也相对少一些。但是经过多年的开发研究。最近microsoft公司又推出了VB6.0版本 VB6.0...
  • vb Script参考文档

    2009-07-28 22:13:02
    Erase 语句 重新初始化固定数组的元素并重新分配动态数组的存储空间。 Err 对象 含有关于运行时错误的信息。 Eval 函数 计算并返回表达式的值。 Execute 方法 根据指定的字符串,执行正则表达式的搜索。 Execute...
  • 注意,编写控件必须有初始化方法,参数为控件服务类 控件服务的作用在于减轻编写控件的难度,将一切控件抽象. 欢迎提出建议,本人的Enum能力有限,请各位将需要的事件告知本人,谢谢. 说好呢,是很好地模拟了控件系统,说...
  • VB.NET 入门经典 (第三版)

    热门讨论 2009-07-29 16:56:26
    5.1.2 用值初始化数组 120 5.2 枚举 121 5.2.1 使用枚举 121 5.2.2 确定状态 124 5.2.3 设置无效值 127 5.3 常量 127 5.3.1 使用常量 128 5.3.2 改变常量 129 5.3.3 各种常量类型 130 5.4 结构 130 5.4.1 创建结构 ...
  • 5.1.2 用值初始化数组 120 5.2 枚举 121 5.2.1 使用枚举 121 5.2.2 确定状态 124 5.2.3 设置无效值 127 5.3 常量 127 5.3.1 使用常量 128 5.3.2 改变常量 129 5.3.3 各种常量类型 130 5.4 结构 130 5.4.1 创建结构 ...
  • 5.1.2 用值初始化数组 120 5.2 枚举 121 5.2.1 使用枚举 121 5.2.2 确定状态 124 5.2.3 设置无效值 127 5.3 常量 127 5.3.1 使用常量 128 5.3.2 改变常量 129 5.3.3 各种常量类型 130 5.4 结构 130 5.4.1 创建结构 ...
  • 实例159 判断变量是否被初始化 实例160 获取文件创建或修改日期 实例161 自定义错误号 实例162 获取当前打开窗口数量 实例163 随机获取姓名 实例164 防止连续出现多个空格 实例165 给程序添加运行参数 实例...
  • 实例159 判断变量是否被初始化 实例160 获取文件创建或修改日期 实例161 自定义错误号 实例162 获取当前打开窗口数量 实例163 随机获取姓名 实例164 防止连续出现多个空格 实例165 给程序添加运行参数 实例...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
  • 4.6.1 使用Erase语句对数组重新初始化 79 4.6.2 使用For Each…Next循环访问数组 80 4.6.3 使用Lbound和Ubound函数取数组上下界 80 第5章 过程和函数 82 5.1 过程的概念 82 5.2 过程的分类 82 5.2.1 按用途...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
  • Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
  • Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
  • Excel_VBA教程

    2014-09-22 11:36:34
    29.编写过程来初始化窗体 211 30.编写过程填充列表框控件 213 31.编写过程控制选项按钮 213 32.编写过程同步文字框和旋转按钮 214 33.编写过程关闭用户窗体 214 34.转移窗体数据到工作表 215 35.使用INFO SURVEY应用...
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    29.编写过程来初始化窗体 211 30.编写过程填充列表框控件 213 31.编写过程控制选项按钮 213 32.编写过程同步文字框和旋转按钮 214 33.编写过程关闭用户窗体 214 34.转移窗体数据到工作表 215 35.使用INFO SURVEY应用...
  • 关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
  • 打冰雹游戏源程序

    2013-06-16 00:07:04
    本次课程设计利用《软件设计基础-VB》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。 要求: 1、对系统进行功能需求分析 2...
  • 7.4.4 在构造函数中使用初始化列表 320 7.5 类的私有成员 320 7.5.1 访问私有类成员 323 7.5.2 类的友元函数 324 7.5.3 默认复制构造函数 326 7.6 this指针 328 7.7 类的const对象 331 7.7.1 类的...
  • 实例196 根据数据字段类型自动格式DataGrid 表格中的数据 355 实例197 使DataGrid控件刷新前后记录的位置 保持不变 356 实例198 隐藏MSHFlexGrid控件的行和列 357 实例199 动态调整MSHFlexGrid表格中字段的 ...
  • 实例196 根据数据字段类型自动格式DataGrid 表格中的数据 355 实例197 使DataGrid控件刷新前后记录的位置 保持不变 356 实例198 隐藏MSHFlexGrid控件的行和列 357 实例199 动态调整MSHFlexGrid表格中字段的 ...
  • 请注意,与 ASP.NET 有关的扩展名(.aspx、ascx、config、asmx、rem、cs、vb 及其他)均已映射到 aspnet_isapi.dll ISAPI 扩展。 图 1. 已配置的文件扩展名映射 讨论 IIS 如何管理传入请求稍稍超出了本文范围。...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

vb窗体如何初始化