"Interface" for a form object

  • Thread starter Thread starter Antony
  • Start date Start date
A

Antony

I know this sounds stupid but I am going to carry on anyway.

I want to create an interface that implements all methods of a form,
plus another one or two. But I need to know if there is an interface
that defines all a forms methods etc. In the example below
"System.Windows.Forms.Form" isn't an interface, but it gets my point
across. Is there an interface for a form that I can substitute here?
Thank you again
Tony


Public Interface interfaceSuperForm
Inherits System.Windows.Forms.Form
Sub sub1(byVal i As Integer)
Sub sub2(byVal i As Integer)
End Interface
 
Antony said:
I know this sounds stupid but I am going to carry on anyway.

I want to create an interface that implements all methods of a
form, plus another one or two. But I need to know if there is an
interface that defines all a forms methods etc. In the example
below "System.Windows.Forms.Form" isn't an interface, but it gets my
point across. Is there an interface for a form that I can substitute
here?

No, I don't think so. What's your intention?
 
Hi there,
I want to create an interface that implements all methods of a form,
plus another one or two. But I need to know if there is an interface
that defines all a forms methods etc. In the example below
"System.Windows.Forms.Form" isn't an interface, but it gets my point
across. Is there an interface for a form that I can substitute here?
Thank you again
Tony

There isn't an interface object for a form. Why do you want to declare an
interface? are you sure it's what you want and not a derived class? Just
make a class derived from System.Windows.Forms.Form and add your extra
functionality. An interface isn't supposed to define how a class acts, it
defines how a class should look.

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
 
Hi Tony,

This is the inheritance heirarchy for Forms:

System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.ContainerControl
System.Windows.Forms.Form

Nary an Interface in sight. You've got lots of typing to do. :-(

Regards,
Fergus
 
People have been saying that there isn't an interface, but there is...
perhaps you want to check out the IWin32Window interface... Which is
implemented somewhere down that fantastic hierarchy Fergus gave us.

--
HTH,
-- Tom Spink, Über Geek

Please respond to the newsgroup,
so all can benefit

"Chaos, Panic, Disorder, my work here is done"


: I know this sounds stupid but I am going to carry on anyway.
:
: I want to create an interface that implements all methods of a form,
: plus another one or two. But I need to know if there is an interface
: that defines all a forms methods etc. In the example below
: "System.Windows.Forms.Form" isn't an interface, but it gets my point
: across. Is there an interface for a form that I can substitute here?
: Thank you again
: Tony
:
:
: Public Interface interfaceSuperForm
: Inherits System.Windows.Forms.Form
: Sub sub1(byVal i As Integer)
: Sub sub2(byVal i As Integer)
: End Interface
 
Hi Tom,

I was just writing a well-done-that-man response and went into MSDN to
find out more about IWin32Window.

System.Windows.Forms.Control
Implements ISynchronizeInvoke, IWin32Window

IWin32Window
Members:
Handle

LOL. One member. Ah, well. :-)

Regards,
Fergus
 
Nak said:
Hi there,


There isn't an interface object for a form. Why do you want to declare an
interface? are you sure it's what you want and not a derived class? Just
make a class derived from System.Windows.Forms.Form and add your extra
functionality. An interface isn't supposed to define how a class acts, it
defines how a class should look.

Agreed. If you had an interface for a Form, there would be TONS of stuff to
implement, why do you want that? And if you need to identify a type of
class, you could just inherit from Forms.Form and check the unknown object
against System.Windows.Forms.Form.

Can you give some more information about what you want to accomplish?

~
Jeremy
 
Well.... You can't have a window without a Handle... ;-)

Perhaps if Antony kindly explained why he wants an interface containing
everything from all that is in your list, we could give him a better
solution.

--
HTH,
-- Tom Spink, Über Geek

Please respond to the newsgroup,
so all can benefit

"Chaos, Panic, Disorder, my work here is done"


: Hi Tom,
:
: I was just writing a well-done-that-man response and went into MSDN to
: find out more about IWin32Window.
:
: System.Windows.Forms.Control
: Implements ISynchronizeInvoke, IWin32Window
:
: IWin32Window
: Members:
: Handle
:
: LOL. One member. Ah, well. :-)
:
: Regards,
: Fergus
:
:
 
lol, IWin32Window is an Interface for HWND. Really though, what other
properties does *every* type of Win32 Window share? (style bits maybe?)

=)
 
Perhaps if Antony kindly explained why he wants an interface containing
everything from all that is in your list, we could give him a better
solution.

Tom, apologies, I post and read through Google Groups UK and there is
a considerable (normally about 6-9 hours) delay before the thread is
updated and I can see my and everyone elses posts. I have just
read all the postings now (9:45am BST, 24 Sept 2003). Armin also asked
me why I wanted to do this. Here's my attempt at explaining. Don't be
hard on me, I'm a novice programmer, late 60's, and still learning.

I think I needed an interface for the following reason. I want to
create an instance of a form that behaves like all other forms in
every respect except for I want to be able to **guarantee** that it has
additional methods. The following works:


Public Interface testInterface
Sub sub1(ByVal i As Integer)
Sub sub2(ByVal i As Integer)
End Interface

Public Class class1
Inherits Form
Implements testInterface

Public Sub sub1(ByVal i As Integer) Implements testInterface.sub1
'do something
End Sub

Public Sub sub2(ByVal i As Integer) Implements testInterface.sub2
'do something
End Sub
End Class


But what I really think I want, is where "class1" just implements an
interface (or an abstract mustinherit class) - that is no "Inherits"
statement in the class declaration. The following imaginary code is
what I am after. This way I always know that sub1 and sub2 exist,
along with all the other stuff for form, because they implement superForm.


Public Interface superForm
Inherits ...... 'Whatever the form interface or mustinherit class is
Sub sub1(ByVal i As Integer)
Sub sub2(ByVal i As Integer)
End Interface

Public Class class1
Implements superInterface
'code in here
'code in here
End Class


Thank you all.
Tony
 
Hi Antony,

Welcome to programming! :-)

|| I want to create an instance of a form that behaves
|| like all other forms in every respect except for I want
|| to be able to **guarantee** that it has additional methods.

A reasonable request.

|| Public Class MyForm
|| Inherits Form
|| Implements testInterface

This will do exactly that, you'll be glad to know. The compiler won't let
you get away without implementing testInterface. You might just write empty
methods - but they <have to exist>. Therefore, for a user of your new Form
class, they are guaranteed.

It's a good job too. If you had a Form that 'inherits' a Form interface it
would have to have implementations of <everything> in that interface. In other
words you would have to write fresh, <new> code for the entire class. By
inheriting from the Form class, you effectively get the Form interface <and>
all the code.

I hope that explains things a bit. :-)

Regards,
Fergus
 
Hi Antony,

Welcome to programing! :-)

|| I want to create an instance of a form that behaves
|| like all other forms in every respect except for I want
|| to be able to **guarantee** that it has additional methods.

A reasonable request.

|| Public Class MyForm
|| Inherits Form
|| Implements testInterface

This will do exactly that, you'll be glad to know. The compiler won't let
you get away without implementing testInterface. You might just write empty
methods - but they <have to exist>. Therefore, for a user of your new Form
class, they are guaranteed.

It's a good job too. If you had a Form that 'inherits' a Form interface it
would have to have implementations of <everything> in that interface. In other
words you would have to write fresh, <new> code for the entire class. By
inheriting from the Form class, you effectively get the Form interface <and>
all the code.

I hope that explains things a bit. :-)

Regards,
Fergus
 
Back
Top