C#-Fragen eines Delphi-Entwicklers

Hallo Habe vor einigen Monaten angefangen mich mit .NET im C#-Umfeld zu befassen. Habe mehrere Jahre Erfahrung in Delphi.
Nachdem ich nun einiges gemacht habe um Best Practices heraus zu finden und ein bisschen zu lernen, möchte ich langsam nun mal ein älteres Delphi-Projekt nach C# bringen, um mal was „Echtes“ zu machen.

Daher einige konkrete Fragen:

  1. Gibt es in .NET/C# sowas ähnliches wie der Coolbar in Delphi ? Oder würde ich evtl. automatisch XP-Style Menüs und Tool/Coolbars bekommen, wenn ich auf XP ein Manifest einbinde ? (Hab’s bisher nur auf einem Win2000-Rechner probiert)

In VS 2005 scheint es dann einfacher zu werden coole XP-GUIs zu erstellen, da einiges gleich automatisch erfolgt…

  1. Auf dem Hauptformular meines Programms habe ich links (ca. 1/3 des Fensters) einen Baum (TreeView) - jenachdem welche Nodes angewählt sind, erscheint auf der rechten Fensterhälte unterschiedlicher Inhalt. Beispielsweise ein Grid oder sonst was. In Delphi hab ich das mit Panels gemacht, die ich je nach TreeView-Selection visible/invisible gesetzt habe.

Was wäre hier der empfohlene Weg in C# ? Auch Panels oder gibt’s vieleicht sowas wie Frames ?

  1. Thema Komponenten&Controls. Kann man sowas auch herunterladen und wie in Delphi installieren ? Wenn ja, sind da ja dann vermutlich Assemblies in DLLs, die ich dann mitgeben muss…

  2. Schickt es sich noch, Einstellungen in die Windows-Registry zu schreiben ? In meinem MSPress-Buch, das zwar nicht so tief in Details geht, dafür kommt man aber gut vorwärts, ist ständig nur die Rede der Config-Files (app.config etc.)

Danke & Gruss Roger

Hallo

  1. Gibt es in .NET/C# sowas ähnliches wie der Coolbar in
    Delphi ? Oder würde ich evtl. automatisch XP-Style Menüs und
    Tool/Coolbars bekommen, wenn ich auf XP ein Manifest einbinde
    ? (Hab’s bisher nur auf einem Win2000-Rechner probiert)

Nö nicht wirklich. Musst du 3. Hersteller Tools verwenden.

  1. Auf dem Hauptformular meines Programms habe ich links (ca.
    1/3 des Fensters) einen Baum (TreeView) - jenachdem welche
    Nodes angewählt sind, erscheint auf der rechten Fensterhälte
    unterschiedlicher Inhalt. Beispielsweise ein Grid oder sonst
    was. In Delphi hab ich das mit Panels gemacht, die ich je nach
    TreeView-Selection visible/invisible gesetzt habe.
    Was wäre hier der empfohlene Weg in C# ? Auch Panels oder
    gibt’s vieleicht sowas wie Frames ?

Frames gibt es nicht. Du kannst dies jedoch mit Panels machen. Ich bevorzuge jedoch eigene UserControls, die ich dann dynamisch auf die Form lade.
Hat den Vorteil, dass die Hauptvorm nicht mit Panels überladen ist… was die arbeit mit dem Designer erleichtert.

  1. Thema Komponenten&Controls. Kann man sowas auch
    herunterladen und wie in Delphi installieren ? Wenn ja, sind
    da ja dann vermutlich Assemblies in DLLs, die ich dann
    mitgeben muss…

Genau.

  1. Schickt es sich noch, Einstellungen in die Windows-Registry
    zu schreiben ? In meinem MSPress-Buch, das zwar nicht so tief
    in Details geht, dafür kommt man aber gut vorwärts, ist
    ständig nur die Rede der Config-Files (app.config etc.)

Die App.Config ist dazu da, Settings für die Applikation abzulegen. Jedoch nur staische werte die nicht geändert werden sollen. Das App.Config liegt im Applikationsverzeichnis und der Windows-User hat eigentlich keine Rechte dort was zu schreiben.

Alle anderen einstellungen gehören ins Verzeicnis c:\Dokument und Einstelluungen"User"\Anwendungsdaten"My App"

Gruss Giuseppe

Ich sehe grad, das du aus Luzern bist ? :wink:

Kannst du zu Punkt 2 noch etwas genauer werden, wie du das so machst ?

Frames gibt es nicht. Du kannst dies jedoch mit Panels machen.
Ich bevorzuge jedoch eigene UserControls, die ich dann
dynamisch auf die Form lade.
Hat den Vorteil, dass die Hauptvorm nicht mit Panels überladen
ist… was die arbeit mit dem Designer erleichtert.

Huch auch ein Luzerner :smile:

Also ich versuchs mal mit PseudoCode…

Zuerst „malst“ du dein UserControl nach deinen Wünschen

Danach machst Du folgendes:

myForm.Controls.Remove(altesUserControl)

if(treeNode == adresse)
{
AdresseUserControl uc = new AdresseUserControl();

myForm.Controls.Add(uc);
uc.Ausrichten();
uc.LadeDaten(myDaten);

}

alles unklar?

gruss

alles unklar?

OK, noch eine kleine Frage:

Gibt’s sowas Ähnliches wie eine ActionList in Delphi ? Die ActionList ist eine unsichtbare Komponente, im Prinzip ein Array/Collection von Funktionen. Die so implementierte Funktion konnte dann im Designer schön an Buttons, Menüs etc. angehängt werden…

Gibt’s sowas Ähnliches wie eine ActionList in Delphi ? Die
ActionList ist eine unsichtbare Komponente, im Prinzip ein
Array/Collection von Funktionen. Die so implementierte
Funktion konnte dann im Designer schön an Buttons, Menüs etc.
angehängt werden…

nein sowas gibt’s nicht. aber einer hat’s selber implementiert.

http://codeproject.com/cs/miscctrl/actionlist.asp

gruss

hm…manchmal hab ich aber schon ein bisschen den Eindruck, dass dieses .NET-Zeug aber schon noch nicht grad fertig ist. So gibt’s auch keine RecordCount-Eigenschaft, um zu sehen wie viele Datensätze eine Abfrage lieferte und dass ein Array beim Ändern seiner Grösse alle Inhalte verliert ist auch nicht grad der Hammer. Ganz zu schweigen, der fehlenden Komponenten&Controls (Actions, Coolbar/Rebar ja sogar TreeView in ASP.NET)

Nun ja…vieleicht kommt’s ja noch in VS2005 bzw. .NET 2.0

Was die Coolbar angeht:
Ich habe an diversen Stellen, was von einem COM-Control Namens „Microsoft Coolbar“ gesehen, das in VB offenbar Rebar hiess. Habe leider dieses Control auf meiner Kiste nicht installiert. Hab dann ein C#-Control gefunden, das ich zwar referenzieren, aber nicht installieren kann. Leider ist mein MSPress-Buch zu Hause :-/ Aber sollten visuelle COM-Controls nicht automatisch in die Toolbox aufgenommen werden ? Wie kann ich diese Controls denn verwenden ?
2: Wie würde sowas aussehen ?

hm…manchmal hab ich aber schon ein bisschen den Eindruck,
dass dieses .NET-Zeug aber schon noch nicht grad fertig ist.

Und ich hab das gefühl, dass dieses .NET Zeug absolut geil ist :smile:

So gibt’s auch keine RecordCount-Eigenschaft, um zu sehen wie
viele Datensätze eine Abfrage lieferte

Guckst Du hier:
http://support.microsoft.com/kb/308352/EN-US/

Ich fülle die Daten meistens in ein DataSet ab und dann kann ich das DataSet abfragen wieviele Rows er hat.

In den ganz seltesten fällen in denen ich das auf dem DataReader brauche, gebe ich den RecoudCount als Output Parameter zurück.

und dass ein Array beim
Ändern seiner Grösse alle Inhalte verliert ist auch nicht grad
der Hammer.

Verwende ArrayList dafür.

Ganz zu schweigen, der fehlenden

Komponenten&Controls (Actions, Coolbar/Rebar ja sogar TreeView
in ASP.NET)

Actions finde ich persönlich unwichtig.
Coolbar/Rebar sind halt Controls… da war MS noch nie stark :smile: In Visual Studio 2005 gibts ne menge mehr… und es gibt ne menge 3. Anbieter / Freeware

TreeView in ASP.NET: FAQ:1405

Nun ja…vieleicht kommt’s ja noch in VS2005 bzw. .NET 2.0

Was die Coolbar angeht:
Ich habe an diversen Stellen, was von einem COM-Control Namens
„Microsoft Coolbar“ gesehen, das in VB offenbar Rebar hiess.
Habe leider dieses Control auf meiner Kiste nicht installiert.
Hab dann ein C#-Control gefunden, das ich zwar referenzieren,
aber nicht installieren kann. Leider ist mein MSPress-Buch zu
Hause :-/ Aber sollten visuelle COM-Controls nicht automatisch
in die Toolbox aufgenommen werden ? Wie kann ich diese
Controls denn verwenden ?
2: Wie würde sowas aussehen ?

Lass die Finger von COM wenn’s geht.
Rechtsklick auf Toolbar --> Add/Remove Items… Dort siehst du dann ein Tab mit .NET Controls und eines mit COM Controls. Das gewünschte anwählen und verwenden.

Guckst du hier:
http://aisto.com/roeder/dotnet/ --> CommandBar

gruss