VB.net学习笔记(十五)继承与多接口练习

VB.net学习笔记(十五)继承与多接口练习,第1张

概述新建项目ObjectAndCompoment,添加一个只能继承的基类Contact Public MustInherit Class Contact Private mID As Guid = Guid.NewGuid Private mName As String Public Property ID() As Guid Get



新建项目ObjectAndCompoment,添加一个只能继承的基类Contact

Public Mustinherit Class Contact    Private mID As GuID = GuID.NewGuID    Private mname As String    Public Property ID() As GuID        Get            Return mID        End Get        Set(value As GuID)            mID = value        End Set    End Property    Public Property name() As String        Get            Return mname        End Get        Set(value As String)            mname = value        End Set    End PropertyEnd Class


再添加一个子类Customer:

Public Class Customer    inherits Contact    Private mPhone As String    Public Property Phone() As String        Get            Return mPhone        End Get        Set(value As String)            mPhone = value        End Set    End PropertyEnd Class

这样ObjectAndCompoment项目里面有两个类,子类继承基类的属性及相关变量。






再添加一项目(文件->添加->添加新项目),选择类库,名为Interfaces,在这个项目中添加接口IPrintableObject

imports System.DrawingPublic Interface IPrintableObject    Sub Print()    Sub PrintPrevIEw()    Sub RenderPage(ByVal sender As Object,ByVal ev As System.Drawing.Printing.PrintPageEventArgs)End Interface

该接口主要用于可以打印的对象。(注意使用.Net提供的标准打印机制,添加引用System.Drawing,并加入imports语句)


接口含Print、PrintPrevIEw方法,分别提供不同的打印类型,RenderPage方法将对象的数据送至打印页。




关键类:ObjectPrinter

由于打印的代码都是通用的,如果将打印代码放入类Customer中,重用性不好,为了重用性,建立一个专门 *** 作打印的类ObjectPrinter

因此在ObjectAndInterface项目中添加一个专门 *** 作打印的类ObjectPrinter:

imports System.Drawingimports System.Drawing.Printingimports InterfacesPublic Class ObjectPrinter    Private WithEvents document As Printdocument    Private printObject As IPrintableObject    Public Sub Print(ByVal obj As IPrintableObject)        printObject = obj        document = New Printdocument        document.Print()    End Sub    Public Sub PrintPrevIEw(ByVal obj As IPrintableObject)        Dim PPdlg As PrintPrevIEwDialog = New PrintPrevIEwDialog        printObject = obj        document = New Printdocument()        PPdlg.document = document        PPdlg.ShowDialog()    End Sub    Private Sub PrintPage(ByVal sender As Object,ByVal ev As System.Drawing.Printing.PrintPageEventArgs) Handles document.PrintPage        printObject.RenderPage(sender,ev)    End SubEnd Class

注意:由于要用到接口,须右击ObjectAndCompoment项目添加引用,把接口Interfaces引入,并添加imports语句

由于该类要 *** 作打印,须将标准打印机制引入,同样右击ObjectAndCompoment项目添加引用,并添加imports语句




上面接口有了,打印代码对象有了,下面再把接口安在Customer类里:

imports InterfacesPublic Class Customer    inherits Contact    Implements IPrintableObject    Private mPhone As String    Public Property Phone() As String        Get            Return mPhone        End Get        Set(value As String)            mPhone = value        End Set    End Property    Public Sub Print() Implements IPrintableObject.Print        Dim printer As New ObjectPrinter        printer.PrintPrevIEw(Me)    End Sub    Public Sub PrintPrevIEw() Implements IPrintableObject.PrintPrevIEw        Dim printer As New ObjectPrinter        printer.PrintPrevIEw(Me)    End Sub    Public Sub RenderPage(sender As Object,ev As Printing.PrintPageEventArgs) Implements IPrintableObject.RenderPage        Dim printFont As New Font("Arial",10)        Dim lineHeight As Single = printFont.GetHeight(ev.Graphics)        Dim leftmargin As Single = ev.marginBounds.left        Dim yPos As Single = ev.marginBounds.top        ev.Graphics.DrawString("ID:" & ID.ToString,printFont,Brushes.Black,leftmargin,yPos,New StringFormat())        yPos += lineHeight        ev.Graphics.DrawString("name:" & name,New StringFormat())        ev.HasMorePages = False    End SubEnd Class

同样,上面代码中:使用了接口,因此右击ObjectAndCompoment项目,添加System.Drawing,并添加imports语句。

注意:上面中的Me,是指调用时对象本身,类似C++的This指针。




下面在ObjectAndCompoment项目的窗体中添加按钮,并添加对应单击事件代码:

imports InterfacesPublic Class Form1    Private Sub button1_Click(sender As Object,e As EventArgs) Handles button1.Click        Dim obj As New Customer        obj.name = "douglas Adams"        CType(obj,IPrintableObject).PrintPrevIEw()    End SubEnd Class




点击按钮,运行:





打印知识:http://blog.csdn.net/zsyzsj/article/details/1620949


本文件源码备份:http://download.csdn.net/detail/dzweather/5990109

总结

以上是内存溢出为你收集整理的VB.net学习笔记(十五)继承与多接口练习全部内容,希望文章能够帮你解决VB.net学习笔记(十五)继承与多接口练习所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1277672.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存