VB.NET学习笔记:一步一步跟我学习Windows 窗体可视化继承实现窗体复用

本文介绍了通过VB.NET实现Windows窗体的继承和复用,详细讲解了如何创建基窗体和子窗体,并解决在窗体继承过程中遇到的多个问题,包括错误处理、事件处理程序的控制、窗体设计限制等,旨在提供一个清晰的窗体复用实现流程。
摘要由CSDN通过智能技术生成

在一个项目中不可避免会有多个窗体的控件布局类似,里面的代码也有好多相同的,可以新建窗体,然后复制粘贴来实现窗体的重复使用,这种方式固然好,可麻烦也随之而来,随着项目的深入,不可避免的要修改窗体布局或代码等,这时就要对多个这样的窗体全部进行修改。正是如此,所以笔者决定采用继承窗体的方式来实现窗体的复用。

窗体继承的官方帮助:Windows 窗体可视化继承

一、 继承窗体的操作方法

窗体继承有两种方式:编程方式或使用视觉继承选取器。编程方式简单易上手,本文仅介绍以编程方式继承窗体,操作步骤如下:

1、创建项目

新一个Windows窗体应用程序,包含被继承的窗体(在这里称基窗体)BaseFrm和继承自基窗体的子窗体Form2。

2、创建基窗体

在基窗体设计界面拉入一个DataGridView控件、一个Button控件和一个TextBox控件,当然啦,你还可以拖入其他控件,只要你需要。如图所示:
在这里插入图片描述

3、创建子窗体

打开子窗体的代码界面,我们将会看到自动生成的代码,如下图:
在这里插入图片描述
要使Form2窗体继承自基窗体BaseFrm,很简单,只需要添加代码:Inherits BaseFrm即可。如下图:
在这里插入图片描述
是不是很简单?

二、窗体继承问题多多

测试过程中发生很多意想不到的错误和问题,具体如下:

1、为类“Form2”指定的基类“BaseFrm”不能与它的其他分部类型之窗体继承一的基类“Form”不同。

当键入Inherits BaseFrm后就会报这个错误,如下图所示:
在这里插入图片描述
解决办法:
在“解决方案资源管理器”中依次点开“Form2.vb”左侧的三角形。
在这里插入图片描述
双击打开“Form2.Designer.vb”代码窗口,将代码Inherits System.Windows.Forms.Form修改为Inherits BaseFrm,如下图:

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在码农的生活中,很多级码农都有这样的经历,会被一个小小的技术问题拦住,然后进度跟不上了,被老板XXXX一大通了。心情不爽了。 好吧,这个曾经是我遇到拦路虎之一。但事实上不是什么大技术。技术就是一层纸,破了就破了。 这是一个关于如何跨窗体操作控件或过程的一个例子。比如,你想用窗体A的按键来执行窗体B的文本框变色。 Imports System Imports System.Threading Imports System.Text Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load CheckForIllegalCrossThreadCalls = False '不写这行,会出错,不允许线程的数据写到TextBox1.Text 中去。 Form2.Show() End Sub Private Sub form1_FormClosing(sender As Object, e As EventArgs) Handles Me.FormClosing ' If runThread.IsAlive = True Then runThread.Abort() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '用的是委托方式 Me.Invoke(New MethodInvoker(AddressOf THREAD2)) End Sub Private Sub THREAD2() Static j As Integer j = j + 1 TextBox1.Text = " 这是 [线程] 操作" & vbCrLf & _ " Button2被点了: " & j & " 次" & vbCrLf & "要求是from2.textbox.text= textbox1.text 。[问题]但为什么不能成功显示呢?" End Sub Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged Form2.TextBox1.Text = TextBox1.Text End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Static j As Integer j = j + 1 TextBox1.Text = " 这是 [非线程] 操作" & vbCrLf & _ "Button3 点击了: " & j & " 次" & vbCrLf & _ "要求是from2.textbox.text= textbox1.text, 可以成功显示,这个是对的。" End Sub End Class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值