注册 登录
编程论坛 VB.NET论坛

vb.net怎么用代码创建一个Form,再添加一个退出按钮?

不懂才问 发布于 2018-02-15 12:26, 6152 次点击
怎么用代码创建一个Form,再添加一个退出按钮?
感觉这样写类代码,对类的理解和控件属性、方法的理解,会加深很多。
就像我以前问的VFP问题那样:
https://bbs.bccn.net/thread-459302-1-1.html
7 回复
#2
xyxcc1772018-02-15 16:29
程序代码:

public class from1
  Private WithEvents myForm As Form
  Private WithEvents btn As Button

 Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
  myForm = New Form
        btn = New Button
        With btn
            .Text = "退出"
            .Height = 30
            .Width = 60
            .Top = 100
            .Left = 120
        End With
        With myForm
            .Text = "新建窗体"
            .Controls.Add(btn)
            .ShowDialog()
        End With

 End Sub

 Private Sub btn_Click(sender As System.Object, e As System.EventArgs) Handles btn.Click
        MsgBox("这是我用代码新建的Form")
        myForm.Close()

 End Sub

End Class
#3
不懂才问2018-02-15 21:19
回复 2楼 xyxcc177
还是没有弄明白,我打开“新建项目”,应该选“Windows 应用程序”,还是“控制台应用程序”,还是“空项目”,还是其他的?

在什么地方输入你的代码呢?

百度了一下“用代码创建主窗体”,还真没有比较好的答案。

求详细解释和步骤,谢谢!
#4
xyxcc1772018-02-15 21:39
windows应用程序,覆盖名为form1的代码,运行就行了。
#5
不懂才问2018-02-16 01:08
回复 4楼 xyxcc177
用你的方法试了一下,出现的是两个窗体。一个是代码创建的,还有一个是“Windows窗体应用程序”本身创建的。

原因可能是:即使用你的代码覆盖了Form1.vb,但Form1.Designer.vb中实例化的Form1还是存在,并且是在Form1.Designer.vb中实例化的Form1的Load事件中,又实例了一个myForm,所以原来的Form1必然存在。

我试了另外一个思路:创建一个“空项目”,再建一个模块,然后再继承Form类,最后再实例化并显示出来。
程序代码:
Module Module1
    Sub Main()
        Dim fm As New Form
        fm.ShowDialog()
    End Sub
End Module

出错:显示未定义类型“Form”

百度了一下:
https://zhidao.baidu.com/question/576961572.html
大概是需要:
Imports System.Windows.Forms
然后我把这一句加在最前面,显示“不包含任何公共成员”之类的信息。

然后我又百度了一下,需要在项目的属性里引用。
所以,我引用了一下。写了下面的代码,算是能运行了,也只有一个窗体了。
程序代码:
Module Module1
    Sub Main()
        Dim fm As New MyForm
        fm.ShowDialog()
    End Sub

    Public Class MyForm
        Inherits System.Windows.Forms.Form
        'Private Sub InitializeComponent()
        'Me.Text = "用类的方式学习窗体和控件"
        'Me.Controls.Add(Me.Button1)
        'Me.Button1 = New System.Windows.Forms.Button
        'End Sub
        'Friend WithEvents Button1 As System.Windows.Forms.Button
    End Class
End Module


但是,问题又来了:
一、引用和导入有什么区别?
二、导入用Imports,那引用要用什么命令呢?不能用代码实现吗?非要在项目属性里设置吗?
三、我写的MyForm类,怎么设置窗体标题之类的?
四、怎么在MyForm类里,加入退出按钮?
五、fm.Show()一闪而过,VFP可以用READ EVENTS,VB用什么办法解决?只能ShowDialog()吗?我感觉不应该,肯定还是关于类的一些知识,没学透啊。。。右下角那个标记,一看就不是正经的窗体。
#6
不懂才问2018-02-16 01:09
回复 5楼 不懂才问
看来我又把时间都花在钻牛角尖上面了。。。

[此贴子已经被作者于2018-2-16 13:38编辑过]

#7
zcsor2018-02-16 10:26
其实你做的工作不是窗体设计器做的吗,它可视化了不比写代码方便么。
你点击解决方案管理器上面的“显示全部文件”,点击解决方案管理器里面窗体文件左面出来箭头打开树形结构,可以发现在窗体文件下面有一个同名的设计文件,自动生成的代码都在那里。
只有本站会员才能查看附件,请 登录

一本好的基础书籍还是应该看的,系统的学习还是必须的。
#8
huanleba1002020-03-04 19:22
这个代码有错误啊!
1