Visuelle Vererbung und VBNET (VS2005)?

29/04/2008 - 16:32 von je | Report spam
Hallo allerseits,

ich bin eigentlich CSharp-Programmierer und wollte einem Kollegen die
Vorzüge einer von Form abgeleiteten FBase klar machen, von der dann
alle Forms in einem Projekt erben. Der Kollege verwendet VB.NET

Ich muss sagen, ich war einigermaßen geschockt, wie schlecht der
Designer in VBNET im Vergleich zum CSharp-Designer ist. Also das wàre
wirklich ein K.O.-Kriterium für die Sprache für mich.

Zunàchst mal kotzt der VB-Designer mir viel zu viel in *.Designer.vb.
Und wenn ich in FBase eine Control-Variable dort raustue und protected
mache, kann er sie im abgeleiteten Formular nur dann anzeigen, wenn
ich wirklich neu erstelle. Nur "erstellen" reicht nicht. Und ich kann
auch in FAbgeleitet keine Eigenschaft àndern, rein garnichts geht.
In VB.NET suche ich den Constructor vergebens. Wenn ich ihn dann
selber reingesetzt habe (weiß schon gar nicht mehr wie das ging), wo
kommt er hin: Natürlich in *.Designer.vb :(

Was ich da so heute erlebt habe, da lassen sich ja Bücher füllen. Z.B.
hat der Designer in dem abgeleiteten Formular immer noch eine Variable
Label1 gesehen, die ich in FBase làngst in lblHeader umbenannt habe.

Geht's nicht besser in VB.NET oder vielleicht liegt's an der
Konfiguration des VS und mir kann einer Tipps geben, wie man das
VB.NET in dieser Hinsicht besser konfiguriert. Ist in VB.NET
grundsàtzlich von GUI-Vererbung abzuraten?

Viele Grüße

Johannes
 

Lesen sie die antworten

#1 Martin H.
29/04/2008 - 17:11 | Warnen spam
Hallo je,

Ich muss sagen, ich war einigermaßen geschockt, wie schlecht der
Designer in VBNET im Vergleich zum CSharp-Designer ist. Also das wàre
wirklich ein K.O.-Kriterium für die Sprache für mich.



Beschreibe doch mal, was Dir am CSharp-Designer besser gefàllt (ich
kenne nàmlich CSharp nicht (jedenfalls nicht wirklich...)).


Zunàchst mal kotzt der VB-Designer mir viel zu viel in *.Designer.vb.



Finde ich nicht: Hier ist ein Form mit 2 Buttons:
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form

'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub

'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button
Me.Button2 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(34, 72)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(157, 31)
Me.Button1.TabIndex = 1
Me.Button1.Text = "Button1"
Me.Button1.UseVisualStyleBackColor = True
'
'Button2
'
Me.Button2.Location = New System.Drawing.Point(92, 25)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(123, 33)
Me.Button2.TabIndex = 2
Me.Button2.Text = "Button2"
Me.Button2.UseVisualStyleBackColor = True
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(447, 454)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Button2 As System.Windows.Forms.Button

End Class

Im Prinzip steht zu den Definitionen der Form- und Buttoneigenschaften
nur noch das "Dispose", sowie die Befehle zum Hinzufügen der Buttons und
der dazugehörigen Events drin. Wie macht das denn C#?

Und wenn ich in FBase eine Control-Variable dort raustue und protected
mache, kann er sie im abgeleiteten Formular nur dann anzeigen, wenn
ich wirklich neu erstelle. Nur "erstellen" reicht nicht. Und ich kann
auch in FAbgeleitet keine Eigenschaft àndern, rein garnichts geht.
In VB.NET suche ich den Constructor vergebens. Wenn ich ihn dann
selber reingesetzt habe (weiß schon gar nicht mehr wie das ging), wo
kommt er hin: Natürlich in *.Designer.vb :(



Ich habe das ausprobiert. Ich habe ein Form mit nur einem Button
erstellt und dann eine neue Klasse, die von Form1 erbt. Dann habe ich
einen weiteren Button hinzugefügt und der Designer hat mir eine Warnung
ausgegeben (in der Liste), daß ich das Projekt neu erstellen muß. Danach
war der Button auf dem abgeleiteten Form da.

Was ich da so heute erlebt habe, da lassen sich ja Bücher füllen. Z.B.
hat der Designer in dem abgeleiteten Formular immer noch eine Variable
Label1 gesehen, die ich in FBase làngst in lblHeader umbenannt habe.



Hattest Du neu kompiliert?

Geht's nicht besser in VB.NET oder vielleicht liegt's an der
Konfiguration des VS und mir kann einer Tipps geben, wie man das
VB.NET in dieser Hinsicht besser konfiguriert. Ist in VB.NET
grundsàtzlich von GUI-Vererbung abzuraten?



Da ich bei meinem kleinen Test keine Probleme hatte, würde ich nicht
davon abraten.

Beste Grüße,

Martin

Ähnliche fragen