窗体使用new关键字与不用的区别

JAVA_APE 2019-04-25 12:35:44
vb.net中 Dim form As FormXX
form = new FormXX 和form = FormXX有什么区别,求大神回答!!
...全文
75 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztltgg 2019-04-25
  • 打赏
  • 举报
回复
和new没什么关系吧, form = FormXX 相当于 My.MyProject.Forms.FormXX ,这个My.MyProject.Forms命名空间下vb.net自动给你生成了一个FormXX实例,就是为了兼容vb6的写法,vb6没有完全面向对象,创建一个窗体就是一个实例,很多老代码没有new来处理的。之前vb.net早期版本是一定要加new的,后来未来兼容就在My.MyProject.Forms里自动加了实例。现在为了和c#统一,还是用new的语法吧。
exception92 2019-04-25
  • 打赏
  • 举报
回复
new 关键字有几种使用方式,简单查询一下了。
exception92 2019-04-25
  • 打赏
  • 举报
回复
new 关键字有几种使用方式,简单查询一下了。
exception92 2019-04-25
  • 打赏
  • 举报
回复
区别在于form引用的是否是内存地址上一个同一引用。
hztltgg 2019-04-25
  • 打赏
  • 举报
回复
但为了兼容以前的
hztltgg 2019-04-25
  • 打赏
  • 举报
回复
按说应该都要有new的,但未来兼容以前的,所以默认自动有一个和类名一样的实例,没用new就是指向了那个默认实例。
基本信息 书名:高等学校计算机应用规划教材:Visual C# 2010程序设计教程 作者: 陈建伟 出版社: 清华大学出版社 页码:326 出版日期:2012-06-01 内容简介   《高等学校计算机应用规划教材:Visual C# 2010程序设计教程》详细介绍了Visual C# 2010程序设计的基础知识、基本方法和应用技巧,共分14章,主要内容包括.NET平台与Visual Studio 2010开发环境、C#语言基础及面向对象程序设计、C#程序设计、C# Web程序设计、C#泛型编程、C#数据库程序设计及ADO.NET等相关知识,并在最后讲解了运用C#处理文件和进行LINQ语言集成查询的内容。   本书的讲述由浅入深、循序渐进,并针对各章知识点附以大量的示例程序和习题。通过本书的学习,读者可以逐步掌握C#程序设计。   本书难度适中,实例丰富,可操作性强,可作为高等学校计算机相关专业的教材或参考用书,也可供广大程序员参考。 目录 第1章.NET平台与Visual Studio开发工具 1.1 Microsoft.NET平台 1.1.1 .NET Framework 4.0概述 1.1.2 理解命名空间 1.2 Visual Studio 2010简介 1.2.1 Visual Studio 2010开发环境概览 1.2.2 菜单栏 1.2.3 工具栏 1.2.4 “属性”及“解决方案资源管理器”面板 1.2.5 其他面板 1.2.6 Visual Studio 2010的新特性 1.3 创建控制台应用程序 1.4 本章小结 1.5 习题 第2章 Visual C# 2010语法基础 2.1 C#语言概述 2.2 C#基础元素 2.2.1 语句 2.2.2 标识符与关键字 2.3 变量 2.3.1 变量的命名 2.3.2 变量的声明和赋值 2.4 数据类型 2.4.1 简单类型 2.4.2 结构类型 2.4.3 枚举类型 2.4.4 引用类型 2.4.5 装箱与拆箱 2.4.6 数据类型的转换 2.5 运算符与表达式 2.5.1 赋值运算符与表达式 2.5.2 关系运算符与表达式 2.5.3 逻辑运算符与表达式 2.5.4 其他运算符与表达式 2.5.5 运算符的优先级 2.6 Visual C# 2010的新特性 2.6.1 大整数类型(Biginteger) 2.6.2 动态数据类型 2.6.3 命名参数和可选参数 2.7 本章小结 2.8 上机练习 2.9 习题 第3章 程序流程控制 3.1 选择结构程序设计 3.1.1 if语句 3.1.2 switch语句 3.2 循环结构程序设计 3.2.1 for语句 3.2.2 for each语句 3.2.3 while语句 3.2.4 do---while语句 3.2.5 跳出循环 3.3 异常处理结构 3.3.1 异常的产生 3.3.2 处理异常 3.4 本章小结 3.5 上机练习 3.6 习题 第4章 数组与集合 4.1 数组 4.1.1 数组的声明 4.1.2 -维数组的使用 4.1.3 多维数组的使用 4.2 集合 4.2.1 集合的定义 4.2.2 集合的使用 4.2.3 常用系统预定义的集合类 4.3 本章小结 4.4 上机练习 4.5 习题 第5章 C#面向对象程序设计基础 5.1 面向对象程序设计概述 5.2 类与对象 5.2.1 类与对象概述 5.2.2 面向对象程序设计相关概念 5.2.3 类的声明与System Object类 5.2.4 对象的声明与类的实例化 5.2.5 类成员 5.2.6 类成员的访问限制 5.2.7 this关键字 5.3 构造函数与析构函数 5.3.1 构造函数 5.3.2 析构函数 5.4 本章小结 5.5 上机练习 5.6 习题 第6章 域、属性与事件 6.1 域 6.1.1 域的初始化 6.1.2 只读域与readonly关键字 6.2 属性 6.2.1 属性的声明 6.2.2 属性的访问 6.3 事件 6.3.1 委托 6.3.2 事件的声明 6.3.3 事件的订阅与取消 6.4 本章小结 6.5 上机练习 6.6 习题 第7章 方法 7.1 方法的声明 7.2 方法的参数 7.2.1 值类型参数传递 7.2.2 引用类型参数传递 7.2.3 输出类型参数传递 7.2.4 数组类型参数传递 7.3 静态方法 7.4 方法的重载 7.5 外部方法 7.6 操作符重载 7.6.1 一元操作符的重载 7.6.2 二元操作符的重载 7.7 本章小结 7.8 上机练习 7.9 习题 第8章 继承与多态 8.1 什么是继承 8.2 使用继承机制 8.2.1 基类和派生类 8.2.2 bas
VB.Net常用语法 一:Try………Catch………finally………end try 捕获错误 把一个可能出错的语句放在try后面,如果出错,执行catch语句, catch可以有多个,第一个catch不能捕获的错误,将被下一个catch语句 所捕获。在所有的处理结束后,执行finally语句。 在一个try………end try 过程中可以使用catch与finally两个中的一 个,或者两个一起用, 二:Protected, private, Public 封装控制 这三个关键字一般放在语句最前面,而会置于overloads与Overrides的 后面 public是工程级别外部访问 protected是本族级别以下内部访问 private是不提供非本地访问 三:ByVal sender As Object, ByVal e As System.EventArgs   这是最赏用事件传递参数。被封装于两个对象内, 如果你要传递相应的参数,要在这两个对象里面找,如当前鼠标位置为 e.X e.Y。在VB.Net中有些事件是要自已动手写的, 如窗体鼠标过程,一般加上这个参数在后面的括号内就解决了。 四:重载语法Overloads 如:class class1 public strtem as string overloads public sub subx()重载subx(A状态) strtem=”3” end sub overloads public sub subx(x as string) 重载subx(B状 态) strtem=x end sub end class 如果你如果调用subx()中间没有参数,则VB自动调用重载subx(A状 态), overloads public sub subx()重载subx(A状态) strtem=”3” end sub 结果就是strtem=”3” 如果你这样调用,subx(“这是一个不同的结果”),则VB自动调用重 载subx(B状态) overloads public sub subx(x as string) 重载subx(B状 态) strtem=x end sub 结果就是 strtem=“这是一个不同的结果” 您可以在函数中调用,包括在API中(当然VB.Net不再使用winAPI). 甚至一些至关紧要的过程也不例外:如new过程(此方法王国荣文章中 有介绍) 如: class class1 Overloads Public Sub New() 。。。。。。 。。。。。。 end sub Overloads Public Sub New(s as string) 。。。。。。 。。。。。。 end sub end class 同样有两种调用的方法,如dim as as class1=new class 调用前面 一个无参数的new过程, 而dim asb as class1=new class(“string”)调用第二个new 过程. 切记,如果一个过程或一个函数只有一种状态,不能这样运用。如果您试 图使用overloads关键字,则VB.Net会出现错误的提示要求你移去 overloads 五:Overrides改写 如常见的dispose过程: Overrides Public Sub Dispose() MyBase.Dispose components.Dispose End Sub Overrides表示完全的改写父类提供的过程与函数 不过要记住使用改写的前提是在父类的同一过程或函数的前面也使用了 overrides关键字 六:mybase.new 与mybase.dispose ublic Sub New() MyBase.New Form1 = Me InitializeComponent End Sub Overrides Public Sub Dispose() ' MyBase.Dispose components.Dispose End Sub 这两个过程是任何一个新建工程都会有的,mybase.new是调用当前类的 父类的new过程,同样你也可以加上参数配合父类的重载New过程。如: Overloads Public Sub New () MyBase.New() End Sub Overloads Public Sub New (string) MyBase.New(string) End Sub 七:Structure构造 自定义类型,如: Structure Type1 Dim x as y Dim a as b 。。。。。。。 end structure 这个取代VB6中的使用type………end type方式自定义类型的方法。 八:return返回值 function functionname() return X。。。。。。 end funtion 他的作用与下面一样: function functionname() functionname = X。。。。。。 end funtion
HGHdll使用说明 HGHdll.dll是胡广辉为了C#实训课程而开发的,主要有以下功能。 一、注册热键与取消热键 类HotKeys 参考代码 (1) HotKeys h = new HotKeys(); (2) //调用热键的窗体需要重写以下方法 protected override void WndProc(ref Message m) { //窗口消息处理函数 h.ProcessHotKey(m); base.WndProc(ref m); } (3) // 注册热键 可在窗体的Load事件中进行 //这里注册了Ctrl+Alt+E 快捷键,当然热键组合可以改写 h.Regist(this.Handle, (int)HotKeys.HotkeyModifiers.Control + (int)HotKeys.HotkeyModifiers.Alt, Keys.E, h.CallBack); MessageBox.Show("注册成功"); 或者代码如下,组合固定为Ctrl+Alt+E h.CAE(this); (4) // 取消热键 可在窗体的FormClosing事件中进行 h.UnRegist(this.Handle, h.CallBack); MessageBox.Show("卸载成功"); 或者代码如下 h.qx(this);//取消热键 [说明:HotKeys类h.CallBack是截屏] 二、截屏窗体 FrmCapture frmC = new FrmCapture(); frmC.Show(); 三、移动与改变控件大小的类BarcodeControl BarcodeControl barcode = new BarcodeControl(控件); 四、快捷语窗体类fw,也可用于管理“代码段” //以下是树控件双击事件中调用快捷语窗体,节点属性Text为服务类型,Name属性为数据库名称(不含拓展名) private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { if (fw.isthisform(e.Node.Text)) { // access数据库的连接字符串Main_Access.DataPath为数据库路径, //e.Node.Name.ToString().Trim()为数据库名称 string cons = "Provider=Microsoft.ACE.OLEDB.12.0 ; Data Source=" + Main_Access.DataPath + e.Node.Name.ToString().Trim() + @".accdb; Jet OLEDB:Database Password=iamhgh "; ( new fw(e.Node.Text, cons)).Show(); } } 注:fw窗体使用说明 (1) ///fw对象在构造时,传递相关服务类型的数据,与连接字符串 public fw(string fwlx, string Connectionstring) {……} (2)// 判断此类型的助词窗体相同的服务类型的实例是否运行,在创建实例前时行判断,没有运行时返回true. public static bool isthisform( string lx) {……} (3)// access数据库操作类,与数据库kjfw01、kjfw02...表tc001相关, 此表有四个字段FatherNodeKey,NodeKey,NodeText,NodeLevel // 表名tc001及其字段名不变,FatherNodeKey为父节点名(存于tag),文本类型; NodeKey为本节点名,关键字,文本类型;NodeText为备注类型; // NodeLevel,为数字类型,存放节点的level 五、类safety (1) // 获取文件的md5值,即信息摘要, 返回16进制的字符串 。 public static string GetMD5HashFromFile(string fileName) {……} 调用代码举例如下: MessageBox.Show(safety.GetMD5HashFromFile(@"F:\BaiduNetdiskDownload\关于阿里巴巴.qlv")); 六、对richtextbox的十多种常用编辑,其中支持中文名称文件的超链接 (1)直接调用代码 (new richtextboxGj(null)).Show(); (2)作为fw窗体共用的富文本编辑窗体

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧