VB.net中MyBase与MyClass与Me的区别

Me     就是 我
MyBase 就是 我老爸

除了上面两个,还有一个MyClass,我叫做 "本来的我"
为什么有“本来的我”,因为我会变质,变质后的我想找回以前的我,就MyClass.

me是(mybase派生出来的myclass)的实例  

注意,上面括号用于提高运算优先级,不是用于注释
--------------------------------------------------------------------------------------------------

MyBase: 
当重写派生类中的方法时,可以使用MyBase关键字调用基类中的方法。假如正在设计一个重写从基类继承的方法的派生类。重写的方法可以调用基类中的该方法,并修改返回值。 
MyClass: 
使您得以调用在类中实现的Overridable方法,并确保调用用此类中该方法的实现,而不是调用派生类中重写的方法。该方法在基类中定义但没有在派生类中提供该方法的实现,这种引用的意义与MyBase. Method 相同 
Me: 
关键字的行为与引用类的当前实例的对象变量类似。一个类可以有多个实例,me 提供了一种方法,用来引用代码正在执行的该类的特定实例。

--------------------------------------------------------------------------------------------------

MyBase 关键字
MyBase 关键字的行为类似于引用类的当前实例的基类的对象变量。MyBase 常用于访问在派生类中被重写或隐藏的基类成员。具体而言,MyBase.New 用于从派生类构造函数中显式调用基类构造函数。

使用 MyBase 调用 MustOverride 基方法无效。

当重写派生类中的方法时,可以使用 MyBase 关键字调用基类中的方法。例如,假设您正在设计一个重写从基类继承的方法的派生类。重写的方法可以调用基类中的该方法,并修改返回值,如下面的代码片段中所示:
Class DerivedClass
   Inherits BaseClass
   Public Overrides Function CalculateShipping(ByVal Dist As Double, _
                                    ByVal Rate As Double) As Double
      ' Call the method in the base class and modify the return value.
      Return MyBase.CalculateShipping(Dist, Rate) * 2
   End Function
End Class
下面的列表描述对使用 MyBase 的限制: 

MyBase 引用直接基类及其继承成员。它无法用于访问类中的 Private 成员。 
MyBase 是关键字,不是实际对象。MyBase 无法分配给变量,无法传递给过程,也无法用在 Is 比较中。 
MyBase 限定的方法不需要在直接基类中定义,它可以在间接继承的基类中定义。为了正确编译 MyBase 限定的引用,一些基类必须包含与调用中出现的参数名称和类型匹配的方法。 
不能使用 MyBase 来调用 MustOverride 基类方法。 
MyBase 无法用于限定自身。因此,下面的代码是非法的: 
MyBase.MyBase.BtnOK_Click()   ' Syntax error.
MyBase 无法用在模块中。 
如果基类在不同的程序集中,则不能使用 MyBase 来访问标记为 Friend 的基类成员。



Me关键字
通过 Me 关键字,可以引用当前在其中执行代码的类或结构的特定实例。Me 的行为与引用当前实例的对象变量或结构变量类似。在向另一个类、结构或模块中的过程传递关于某个类或结构的当前执行实例的信息时,使用 Me 尤其有用。例如,假定在某模块中有以下过程:
Sub ChangeFormColor(FormName As Form)
   Randomize()
   FormName.BackColor = Color.FromArgb(Rnd() * 256, Rnd() * 256, Rnd() * 256)
End Sub
可以使用以下语句来调用此过程并将“窗体”(Form) 类的当前实例作为参数传递:
ChangeFormColor(Me)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在VB实现拖动放大缩小可以通过以下步骤完成: 1. 在窗体添加一个 PictureBox 控件,用于显示图像。 2. 在窗体添加两个 ScrollBar 控件,一个用于控制图像的水平缩放比例,一个用于控制图像的垂直缩放比例。 3. 在窗体添加一个 Timer 控件,用于检测鼠标是否拖动。 4. 在窗体的 Load 事件加载需要显示的图像,并将图像绘制在 PictureBox 控件。 5. 在 PictureBox 控件的 MouseDown 事件记录鼠标按下的位置,并启动 Timer 控件。 6. 在 Timer 控件的 Tick 事件检测鼠标是否拖动,并根据拖动的方向和距离调整 PictureBox 控件的位置和大小。 7. 在 ScrollBar 控件的 ValueChanged 事件根据滚动条的值调整 PictureBox 控件的大小。 以下是一个示例代码,可以实现上述功能: ``` Public Class Form1 Private mouseDownPoint As Point ' 鼠标按下的位置 Private isDragging As Boolean ' 是否在拖动 Private originalImage As Bitmap ' 原始图像 Private zoomedImage As Bitmap ' 缩放后的图像 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 加载图像并绘制到 PictureBox 控件 originalImage = New Bitmap("image.png") PictureBox1.Image = originalImage End Sub Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown ' 记录鼠标按下的位置,并启动 Timer 控件 mouseDownPoint = e.Location isDragging = True Timer1.Start() End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick If isDragging Then ' 计算鼠标拖动的距离 Dim deltaX As Integer = Cursor.Position.X - mouseDownPoint.X Dim deltaY As Integer = Cursor.Position.Y - mouseDownPoint.Y If deltaX <> 0 Or deltaY <> 0 Then ' 根据鼠标拖动的方向和距离调整 PictureBox 控件的位置和大小 Dim newLeft As Integer = PictureBox1.Left + deltaX Dim newTop As Integer = PictureBox1.Top + deltaY Dim newWidth As Integer = PictureBox1.Width - deltaX Dim newHeight As Integer = PictureBox1.Height - deltaY If newWidth > 0 And newHeight > 0 Then PictureBox1.Left = newLeft PictureBox1.Top = newTop PictureBox1.Width = newWidth PictureBox1.Height = newHeight ' 缩放图像并显示到 PictureBox 控件 zoomedImage = New Bitmap(originalImage, PictureBox1.Width, PictureBox1.Height) PictureBox1.Image = zoomedImage End If End If End If End Sub Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp ' 停止拖动 isDragging = False Timer1.Stop() End Sub Private Sub HScrollBar1_ValueChanged(sender As Object, e As EventArgs) Handles HScrollBar1.ValueChanged ' 根据水平滚动条的值调整 PictureBox 控件的宽度 Dim newWidth As Integer = originalImage.Width * HScrollBar1.Value / 100 Dim newHeight As Integer = originalImage.Height * VScrollBar1.Value / 100 If newWidth > 0 And newHeight > 0 Then PictureBox1.Width = newWidth PictureBox1.Height = newHeight ' 缩放图像并显示到 PictureBox 控件 zoomedImage = New Bitmap(originalImage, PictureBox1.Width, PictureBox1.Height) PictureBox1.Image = zoomedImage End If End Sub Private Sub VScrollBar1_ValueChanged(sender As Object, e As EventArgs) Handles VScrollBar1.ValueChanged ' 根据垂直滚动条的值调整 PictureBox 控件的高度 Dim newWidth As Integer = originalImage.Width * HScrollBar1.Value / 100 Dim newHeight As Integer = originalImage.Height * VScrollBar1.Value / 100 If newWidth > 0 And newHeight > 0 Then PictureBox1.Width = newWidth PictureBox1.Height = newHeight ' 缩放图像并显示到 PictureBox 控件 zoomedImage = New Bitmap(originalImage, PictureBox1.Width, PictureBox1.Height) PictureBox1.Image = zoomedImage End If End Sub End Class ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值