Well,事实上C#是提供了类似VB6.0和VB.NET的WITH表达式的,那就是对象初始化器
创新互联建站主营彭阳网站建设的网络公司,主营网站建设方案,app软件开发公司,彭阳h5微信小程序搭建,彭阳网站营销推广欢迎彭阳等地区企业咨询
例如,
VB Code:
Private Sub Foo()
Dim theCustomer As New Customer
With theCustomer
.Name = "xxx"
.City = "广州市白云区"
End With
End Sub
Public Class Customer
Public Property Name As String
Public Property City As String
End Class
C# Code:
protected internal void Foo(){
var customer=new Customer{Name="xxx",City="广州市白云区"};
}
不加也是一样的效果,就是比较麻烦一点要写多行类的头
比如不加with:
objstuHead.name ="张三"
objstuHead.name(1) ="Dav"
objstuHead.name(2) ="adfad"
objstuHead.name(3) ="adfeqw"
如果加with:
with objstuHead
.name ="张三"
.name(1) ="Dav"
.name(2) ="adfad"
.name(3) ="fqwtwa"
end with
所以说加with 就可以省去写好多的objstuHead 的头。意思是不用一直重复的写对象,而且用with 也比较方便读一段代码
大体看一下这个类里的事件都是私有的(Private) 如果想在窗体中使用这个事件就把类中事件前的Private关键字改成Public如:
Public Sub PicCurve_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PicCurve.Paint
在窗体中调用的方法就是实例化类就行了。因为这个类有NEW所以在实例化的时候要赋参数
代码如下数值是我临时写的。调用的时候你根据实际情况改一下就行。参数PictureBox1是在窗体上添加的PictureBox控件。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim AA() As Single = {0.1, 1.2, 1.5, 1.6, 1.8}
Dim clsPaint As New bbbb(PictureBox1, AA, "PictureBox_1")
clsPaint.PicCurve_Paint(Me, Nothing)
End Sub
EVENT事件不是过程,要处理事件要用到HANDLES 或ADDHANDLER 将事件处理过程关联起来:
PUBLIC EVENT USERNAME()
SUB DOENENT() HANDLES ME.USERNAME
触发事件用RAISEEVENT USERNAME
所以WITHEVENTS是声明该类有事件过程而已
其实是一个定义变量时候的修饰符,指的是被修饰的变量拥有所定义的类的属性和方法。
举个最简单的例子:
Public Class Form1
Dim WithEvents a As Form1
Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
a = Me
a.Text = "abc"
a.Close()
End Sub
End Class
这里定义了一个名为 a 的 Form1 类型的变量,加上 WithEvents 修饰就是说这个 a 拥有了 Form1 这种类型的属性和方法。
a = Me,先实例化给 a 赋值成了当前窗体。
a.Text = "abc" a.Close(),a 目前就已经相当于 Form1了。
当然这是最简单的一个示范例子,实际使用中并不是这么用的。
再给个例子,题主能看明白否?
Public Class Form1
Dim WithEvents a As abc
Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
a = New abc
a.abcd()
End Sub
End Class
Public Class abc
Sub abcd()
MsgBox("123")
End Sub
End Class