Laden...

Windows.Controls gegen Windows.Forms

Erstellt von Schlaftablette vor 5 Jahren Letzter Beitrag vor 5 Jahren 2.822 Views
S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren
Windows.Controls gegen Windows.Forms

Hallo

ich glaube ich laufe da gegen eine Wand.

Ich habe einerseits ein Canvas (System.Windows.Controls;)
und ich habe ein DataGridView (System.Windows.Forms)

leider lässt der Compiler nicht zu, daß ich das DGV in das Canvas stopfe.

Da ich später mehr mit WPF machen will, werde ich vermutlich eher bei Windows.Forms bleiben.

hauptCanvas.Children.Add(dgv_arbeiten);

In Java verwende ich ein GridBagLayout, gibt's hier was ähnliches, um die GUI zu erstellen ??

S.

5.658 Beiträge seit 2006
vor 5 Jahren

Hi Schlaftablette,

eine Canvas benutzt man üblicherweise, um grafische Elemente frei zu positionieren. Ich kann mir keinen Anwendungsfall vorstellen, wo man ein DataGrid in einem Canvas positionieren sollte.

Andererseits könntest du sowohl in WinForms dein DGV ohne Canvas frei auf der Form positionieren, und andererseits in WPF das WPF-DataGrid verwenden. Aber für eine Technologie mußt du dich halt entscheiden.

Weeks of programming can save you hours of planning

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

Danke für die info, dann fliegt das Canvas da Raus 😃

Ich habe in meiner GUI im oberen Bereich ein Panel und Links ein Panel, im Restlichen Bereich soll dann immer die jeweils ausgewählte GUI (ist je nach Auswahl der Panles immer was anderes) angezeigt werden.

Was würde sich da empfehlen ... kann ich in diesen Bereich ein eigenes Panel reingeben ?
Oben und links hab ich je ein Stackpanel.

Sehe gerade, könnte da ein Grid verwenden.

Oder hast du eine andere Empfehlung ??

S.

656 Beiträge seit 2008
vor 5 Jahren

Klingt als ob du einen ContentPresenter oder ein ContentControl möchtest...wenn du jetzt in WPF weiter arbeitest.
Unter WinForms wärs vermutlich einfach ein Panel oder so, was du zur Laufzeit durch ein anderes ersetzt (bzw. dessen enthaltenen Controls).

Und man kann theoretisch WPF Controls unter WinForms und umgekehrt hosten. Die Frage ist eher, ob man das unbedingt tun sollte...

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

In Java konnte ich sehr gut per code das Panel leeren, und meine neuen gewünschten Controls reinsetzen(geht dort per GirdBagLayout supergenial, wenn auch mehr code dahinter).
Das hätte ich hier auch am liebsten.

Controls per WPF zur Laufzeit neu setzen (was der ContentPresenter machen dürfte, wenn ich das richtig gelesen habe) hebe ich mir für später auf 😃

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

Ich habe jetzt das Canvas gegen ein Grid getauscht und will in das Grid mein DataGridView platzieren:

hauptGrid.Children.Add(dgv_arbeiten);

leider gleicher fehler wie vorher,

Fehlermeldung:
Fehler CS1503 Argument "1": Konvertierung von "System.Windows.Forms.DataGridView" in "System.Windows.UIElement" nicht möglich.

*heul*

S.

16.842 Beiträge seit 2008
vor 5 Jahren

Wie bereits gesagt wurde ist es nicht möglich, dass Du blind versuchst WPF Elemente in ein WinForms Element zu bringen (und umgekehrt) 😉

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

Danke, das habe ich hier schon mitbekommen, deshalb suche ich eine Lösung.

16.842 Beiträge seit 2008
vor 5 Jahren

Aber für eine Technologie mußt du dich halt entscheiden.

Das ist die Lösung.

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

Danke für deine Entscheidungshilfe !!!!!!!!!!!!!!!!!!!!!

Ich bin leider noch immer dort, wo ich am Anfang bin, ich weiß nicht was das bessere ist, ich habe weder mit dem einen noch mit dem anderen Erfahrung.

ich hab mal bei einem Workshop das WPF gesehen, wie schnell dies über den Grafischen Editor geht, daher hab ich das als erstes Fenster genommen.
Nun will ich einen Teil davon als immer wieder neu aufgebautes verändertes Formular, welches ich per Code leere und immer wieder meine neuen Controls einsetze.

Leider kenne ich weder den Umfang des einen noch des anderen.
Was kann mehr, was hat mehr Zukunft ???

Da ich mit WPF angefangen habe, würde ich gerne bei "Windows.Controls" bleiben.

Wenn ich im Web nach Lösungen für mein aktuelles Problem (eine Tabelle, die ich per Daten befülle, bzw. die sich die Daten selbst aus Objekten holt) suche, komme ich eigentlich immer auf das DataGridView, daß ich hier ja nicht verwenden kann.

Danke @MrSparkle, dein beitrag war die bisher einzige Hilfe, werde mal mit DataGrid probieren, was bei der suche nur leider etwas anstrengend ist, will ich da unheimlich viele DataGridView Ergebnisse bekomme, aber sonst wär es ja vermutlich zu einfach.

über HILFREICHE Kommentare freue ich mich auch weiterhin.

Danke bisher !
S.

16.842 Beiträge seit 2008
vor 5 Jahren

Ich bin leider noch immer dort, wo ich am Anfang bin, ich weiß nicht was das bessere ist, ich habe weder mit dem einen noch mit dem anderen Erfahrung.

Was kann mehr, was hat mehr Zukunft ???

So funktioniert Evaluierung in der Software Entwicklung nicht.

Es kommt nicht drauf an, was mehr kann - sondern was für euren Zweck passt.
Und solch eine Evaluierung kann euch niemand abnehmen - egal wie freundlich oder unfreundlich Du das empfinden magst.

Auch was mehr Zukunft hat wird Dir keiner sagen können.
Beide Technologien sind Feature Complete, jedoch WPF das neuere.

WPF ist aber nicht für Cross-Platform geeignet (Forms auch nicht). Willst Du jetzt also noch nen drittes Thema mit HTML Engine aufmachen, weil das wohl in der Gesamtbetrachtung das Zukunftsreichste sein dürfte?
Ist aber Cross Platform für euch relevant?

Diese Antworten kannst Du Dir nur selbst geben.
Wenn Du aber meinst unfreundlich zu Leuten zu sein, die Dir helfen wollen - auch wenn nicht sachlich können - dann bitte ich Dich einen anderen Spielplatz zu suchen.

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

@th69: ja sowas hab ich, nur mal wieder, versuche ich mich für eines zu entscheiden (gerade z.b. Windows.Controls) bekomme ich hier den Hinweis, wie ich es mit dem anderen mache WÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Rand oben und Rand links mit einem StackPanel geht schon, aber Danke 😃

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

@Abt: Ich will nicht unfreundlich sein, empfinde aber ein "geht nicht" oder "entscheide dich für irgendwas" ohne Hintergrund nicht als wirkliche Hilfe.

Auch was in Zukunft noch alles kommen wird, kann ich jetzt noch nicht sagen.

Ich hab nur mitbekommen, das oft eines durch ein anderes Abgelöst wird und dann nicht mehr weiter programmiert wird, da will ich natürlich nicht auf das alte Pferd setzen.

Cross-Plattfom ist derzeit kein Thema, erstmal muß es auf Windows (PC, und evtl. dann auch Windows Tablets) laufen, ob in 10 jahren meine Firma mal auf was anderes umsteigt ist nicht vorhersehbar.

S.

16.842 Beiträge seit 2008
vor 5 Jahren

Auch was in Zukunft noch alles kommen wird, kann ich jetzt noch nicht sagen.

Wir auch nicht.

da will ich natürlich nicht auf das alte Pferd setzen

Wenn "alt" Dein Kriterium ist, dann nimm WPF - weil neuer.

Natürlich evaluiert man erst mal, ob das neueste passt.
Und das ist eben in der .NET Desktop Welt WPF.

@Abt: Ich will nicht unfreundlich sein, empfinde aber ein "geht nicht" oder "entscheide dich für irgendwas" ohne Hintergrund nicht als wirkliche Hilfe.

Die Evaluierung ist aber ganz allein Deine bzw. Eure Aufgabe, die auch Du bzw. ihr verantwortet.
Später bei einer Fehlentscheidung zu sagen "Aber hey, die Dödel aus dem Forum haben das und das gesagt" - gilt halt nicht.

Du bist nicht der erste, der WinForms gegen WPF evaluiert - und Du wirst nicht der letzte sein.
Google-Suche nach wpf vs winforms

Wo ist das Problem, dass Du nun keine Evaluierung machst?
Aktuell stocherst Du ja etwas blind im Code rum und versuchst X mit Y zu mischen.

Das wird so in der Form mit Vollgas gegen die Wand fahren - zeigt die Erfahrung.

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

Aktuell setze ich VBA ein (kann aber nur singlethread) und Java (kann nicht in laufende Microsoft-Prozesse wie Excel eingreifen).
Und beide Laufen bereits ein paar jahre, und sind nicht gegen die Wand gefahren, will nur die alten Entwicklungen verbessern.

Daher versuche ich das auf C# zu bringen.

Hab mal den Link durchgelesen, WPF gegen WinForms, da wird am schluß ja eher von beiden Abgeraten, hin zu Web.

Dann versuche ich das demnächst von DataGridView auf DataGrid zu bringen.

Schönes Warmes Wochenende noch !
S.

16.842 Beiträge seit 2008
vor 5 Jahren

Je nachdem was ihr mit Excel macht, wird die zukünftige Schnittstelle von Excel ohnehin JavaScript sein - und nicht (mehr) .NET.
Aber auch das Thema liegt in der Verantwortlichkeit von eurer Evaluierung.

4.942 Beiträge seit 2008
vor 5 Jahren

Wenn du WPF verwenden willst, dann solltest du aber auf jeden Fall [Artikel] MVVM und DataBinding benutzen (ich denke mal, so hast du in Java auch nicht programmiert).
Und die gesamte UI wird mittels XAML umgesetzt (nicht im Code-Behind), z.B. mittels "control templates".

Einfach nur eine (neue) Techologie benutzen, ohne die dazugehörige Programmierphilosophie zu verstehen, führt dann eher zu Frust.

Wenn es dir nur darum geht eine Java-UI möglichst analog nach .NET zu portieren, dann verwende WinForms.

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

@Abt:
Javascript ? Das verwende ich aktuell für Webseiten, glaube nicht, daß ich damit auf Excel zugreifen kann.

Javascript und PHP bin ich auch noch am anfang, ist aber ne andere Sache 😄

Ich schreibe mir (unf für einen kleinen Bereich) nur Hilfstools, um effizienter Arbeiten zu können.

@Th69:
Das kommt nach und nach, Jetzt mal der Umstieg, wenn das geht, dann wird XAML forciert, DataBinding probiere ich schon, aber alles was ich finde zielt da auf Tabellen in Server ab, meine jetzigen Daten liegen in keinen Datenbanken, sondern in Objekten. Wie ich die am besten anbinde, da bin ich bereits am suchen/testen.

lg S.

16.842 Beiträge seit 2008
vor 5 Jahren

@Abt:
Javascript ? Das verwende ich aktuell für Webseiten, glaube nicht, daß ich damit auf Excel zugreifen kann.

Statt glauben oder nicht einfach mal recherchieren.
Allgemein mein Tipp an Dich mal das Zeug anzuschauen auf das man Dich aufmerksam machen will, statt direkt pauschal abzulehnen. Du willst Infos, Du bekommst Infos - und schaust dann offensichtlich nicht mal nach.
Excel JavaScript API core concepts
Ansonsten können wir es lassen Dir Tipps zu geben, wenn Du es sowieso ablehnst oder nicht glauben willst.

Office 365 Extensions zB sind nur über JavaScript möglich - laufen aber auch in der Desktop-Variante.
Hat Microsoft vor ca. 4-5 Jahren auf der Build// vorgestellt.

Wenn Du JavaScript nur für Webseiten in Betracht ziehst, dann dürfest Du so ca. 10+ Jahre verpasst haben 😉

4.942 Beiträge seit 2008
vor 5 Jahren

Für den Zugriff auf Excel (bzw. generell Office) schau dir mal NetOffice - Ein versionsunabhängiger Wrapper für MS-Office an (dies ist generell unabhängig von der UI Technologie).

S
Schlaftablette Themenstarter:in
17 Beiträge seit 2016
vor 5 Jahren

Hallo

@abt: Da ich kein Programmierer bin habe ich mehr als 10 jahre versäumt, und das nicht nur in C#, sondern in vielen anderen Sprachen auch, vermutlich so wie die meisten, die hier nach Hilfe suchen daher verzeihe mir bitte meine peinlichen Anfängerfragen.

Wenn ich nach Javascript und eigenständiges Programm suche, dann finde ich - schon mal in der Überschrift der Suchergebnisse - nahezu immer Verbindungen mit HTML,PHP oder webserver (sorry, wenn ich mir jetzt wieder nicht alle Treffer aufgemacht und durchstudiert habe)

@th69:
Zugriff auf Exchange und Excel hab ich bereits geschafft, da habe ich genug gefunden über Google und hier im Forum.
In Java hab ich die Tabellenausgabe per Tabellenmodelle realisiert, habe dazu aber nichts in C# gefunden. Sollte dies in C# geben wäre das für mich natürlich genial.

Zurück zum Thema:

Gibt es eine Möglichkeit so ne Art platzhalter zu verwenden, wo ich dann Windows.Forms oder Windows.Controls anzeigen kann ???
Wenn ich mir die Vererbungshrachchie anschauen, kommen die beiden ja erst bei System.Object zusammen.- also ganz oben 😦

lg S.

709 Beiträge seit 2008
vor 5 Jahren

Nutze doch einfach das passende Control.
*DataGridView (Windows Forms) *DataGrid (WPF)

T
461 Beiträge seit 2013
vor 5 Jahren

@abt: Da ich kein Programmierer bin...

Hallo, in welcher Firma arbeitest du, daß du Zeit für solch interne Tools hast und es dir erlaubt ist dafür Zeit aufzuwenden?

Als ich es in der vorletzten Firma angehen wollte, bekam ich eine über die Rübe! 😁

Mal abgesehen davon, was ich bis jetzt gelesen habe, ist ein Wirr/Warr, ein Hexenkessel mit dem Endergebnis einer Chaostheorie...

Was angesprochen wurde:
1.) Entscheidung ob WinForms oder WPF (besser als mischmasch)
1.1) MVVM Reinziehen und verstehen lernen, nicht nur überfliegen 😉
2.) Klein beginnen und Schrittweise die Funktionen einbauen
3.) vergessen, daß alles sauber in Kürze einfach so gemacht werden kann

Wenn du MVVM durch und verstanden hast, weißt du auch, wie man im DataGrid Daten binden kann und ohne jedlichen Eingriff vom Background das UI verändern muß.
Dazu zählt auch das dynamische Einbinden/Entfernen von Controls...

Ich war auch mal an den Punkt -direktes arbeiten mit dem DataGrid UI und kann es nur bereuen!-

Grüße

Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄

16.842 Beiträge seit 2008
vor 5 Jahren

Hallo

@abt: Da ich kein Programmierer bin habe ich mehr als 10 jahre versäumt, und das nicht nur in C#, sondern in vielen anderen Sprachen auch, vermutlich so wie die meisten, die hier nach Hilfe suchen daher verzeihe mir bitte meine peinlichen Anfängerfragen.

Das ist kein Thema - das hält Dir auch keiner vor.
Aber gerade mit einem entsprechenden Unwissen, was okay ist, solltest Du umso mehr den Hinweisen der Helfer folgen - und sie nicht einfach abschmettern mit der Aussage "glaube ich nicht".