Несколько лет назад то, когда я должен был сделать Java (1.4.x), я хотел оценку (), метод и Солнца javac (было?) записанный в Java, таким образом, это должно было только связать tools.jar и использование это с некоторым кодом связующего звена вокруг этого.
No, System.Windows.Forms.Form
doesn't have the FormInterface implemented, so VB.NET doesn't know they match. VB.NET doesn't do implicit interface implementation, just explicit.
Yes, you should create a base class and implement your interface on that. I would, however, name them slightly different. Perhaps DoShow
and DoHide
.
Something like this:
Public Class BaseForm
Inherits System.Windows.Forms.Form
Implements FormInterface
Public Sub SetupForm() Implements FormInterface.SetupForm
End Sub
Public Sub DoShow() Implements FormInterface.DoSHow
Me.Show()
End Sub
Public Sub DoHide() Implements FormInterface.DoHide
Me.Hide()
End Sub
End Class
Else you could by accident do this:
Public Class BaseForm
Inherits System.Windows.Forms.Form
Implements FormInterface
Public Sub SetupForm() Implements FormInterface.SetupForm
End Sub
Public Sub Show() Implements FormInterface.SHow
Me.Show()
End Sub
Public Sub Hide() Implements FormInterface.Hide
Me.Hide()
End Sub
End Class
And that will crash and burn.
Don't make the baseclass MustInherit, because the forms designer won't like that.
Unless you intended to use protected members of the Form
class in Form1
members, I would use a containment relationship instead of inheritance. So you would have your FormInterface
named something like IFormWrapper
instead, and your implementation would be like this (I show it in C# because it is my working language, I think you will be able to translate the idea to VB):
public class Form1 : IFormWrapper
{
private readonly Form form;
public Form1 {
this.form=new Form();
}
public void Show() {
form.Show();
}
public void Hide() {
form.Hide();
}
public void SetupForm() {
//Code for the setup method
}
}
After all, if you were planning to use Form1
instances through the FormInterface
class, you would have had no access to the Form
members other than Show
and Hide
.