Laden...

Forenbeiträge von MrSparkle Ingesamt 5.658 Beiträge

19.11.2020 - 17:41 Uhr

Siehe die Doku zu UnauthorizedAccessException

thrown when the operating system denies access

Offenbar hat VS keine Rechte, auf die Dateien zuzugreifen.

17.11.2020 - 17:41 Uhr

Verständnis wie man if/else-Zweige und for-Schleifen logisch aufbaut, habe ich prinzipiell keine Probleme, siehe Vorkenntnisse Javascript.

Wenn du meinst, daß man mit if/else und for-Schleifen größere Projekte umsetzen kann, dann überschätzt du dich aber gewaltig.

Was soll ich deiner Meinung nach insbesondere von den "Grundlagen" anschauen?

Ich kann schlecht per Ferndiagnose einen Lehrplan für dich erstellen, aber hier ein paar Ideen: Vererbung, Klassendesign, Events, Enumerations, Linq, generische Typen... Du sagtest einmal, du hast ein C#-Buch. Arbeite das durch, schau dir ein paar Tuturials auf YouTube an und erstelle ein paar kleinere Übungsprojekte. Und dann beschäftige dich damit, wie WPF funktioniert.

17.11.2020 - 15:40 Uhr

Du kannst die Positions-Eigenschaften deiner ViewModels direkt an die Canvas.Left- bzw. Canvas.Top-Eigenschaften binden. Dazu benötigst du aber erst einmal ein ViewModel für die Objekte, die in der Canvas gezeichnet werden sollen.

Text in eine Canvas zu zeichnen ist aber irgendwie sinnlos, wenn er nicht beliebig platziert werden muß. Dafür gibt es geeignetere Controls, wie z.B. ListView.

Ich würde dir übrigens empfehlen, angesichts deines derzeitigen Kenntnisstands erst einmal die Grundlagen von C# aufzufrischen. Der Schritt von "kann ich ein Programm in einer einzigen Klasse schreiben" zu "wie kann ich ViewModels an eine Canvas binden" ist schon etwas extrem.

17.11.2020 - 15:20 Uhr

Wo genau liegt das Problem? Das Forum ist nicht dazu da, deinen Code zu debuggen.

Wenn du nicht weißt, was passiert, verwende den Debugger: [Artikel] Debugger: Wie verwende ich den von Visual Studio?

Bitte beachte zukünftig [Hinweis] Wie poste ich richtig?, besonders Punkt 5.

Wie es richtig geht, steht in [Artikel] MVVM und DataBinding

16.11.2020 - 20:24 Uhr

Du kannst im Converter einen Breakpoint setzen und die dann im Debugger anschauen, was dort passiert: [Artikel] Debugger: Wie verwende ich den von Visual Studio?

Du mußt auch nicht bei jedem Vergleich den Wert wieder in ein Datum umwandeln. Das kann man am Anfang einmal machen. Bei "Gelb" scheinst du gemäß der Beschreibung "≥" anstatt "≥" zu verwenden.

16.11.2020 - 14:35 Uhr

Es sollte eine Exception geworfen werden. Da steht dann, was genau das Problem ist.

16.11.2020 - 14:16 Uhr

Wie würdet ihr den Button disablen wenn im DataGrid ein ValidationError entseht?

Gar nicht, ich würde ein DataGrid nicht für die Dateneingabe verwenden.

Im Internet wenn ich danach suche finde ich immer Ansätze bzgl. INotifyDataError bzw. IDataErrorInfo. So wie ich das verstanden habe müsste ich aber in meiner Klasse, die ich in meiner ObserveableCollection<> habe dann das implementieren. Ansich ist das kein Problem, jedoch hab ich ja dann mit DataErrorValidationRule schon eine Kontrolle ob die Eingabe korrekt ist. Hätte dann somit an zwei Stellen im Programm so eine Prüfung.

Ein Interface zu implementieren, verlangt von dir nicht, die Funktionalität neu zu implementieren. Wenn deine Validierungsfunktion flexibel genug aufgebaut ist, dann kann sie auch von beiden Interface-Implementierungen verwendet werden.

16.11.2020 - 14:10 Uhr

So in etwa:


<Style TargetType="{x:Type ListViewItem}">
        <Setter Property="Foreground" Value="YourForegroundColour" />
</Style>

Siehe dazu auch [Artikel] MVVM und DataBinding, Abschnitt Styles und Trigger

11.11.2020 - 17:18 Uhr

Bitte beachte [Hinweis] Wie poste ich richtig?, besonders Punkt 1.1, 4 und 5.

Das Forum ist kein kostenloser Code-Generator. Wenn du DataBinding verwenden möchtest, dann kannst du selbst nachlesen, wie es funktioniert. Siehe der von JimStark gepostete Link. Wenn du eine Frage dazu hast, dann stell die Frage und poste den dafür relevanten(!) Code-Ausschnitt.

11.11.2020 - 17:13 Uhr

Kannst du bitte mal genauer erkläaren, was du hast und was du machst?

Handelt es sich bei der DLL um eine .NET-Assembly?

Wenn du eine Fehlermeldung bekommst, dann poste die Meldung bitte hier. Oder besser noch, gib die Meldung (am besten die Englische) bei Google ein, und finde die Lösung dafür. Du kannst davon ausgehen, daß du nicht der erste bist, der eine DLL in ein Projekt einbinden möchte.

Bitte beachte [Hinweis] Wie poste ich richtig?, besonders Punkt 1.1 und 5.

10.11.2020 - 16:59 Uhr

Bitte verwende keine Full Quotes, wir haben keine Lust, ständig deine Beiträge zu editieren.

Bitte beachte [Hinweis] Wie poste ich richtig?, Punkt 2.3

10.11.2020 - 16:27 Uhr

Du kannst mich gern eines besseren belehren - dann aber mit Fakten und nicht mit Vermutungen! 😉

Bitte immer schön den Ball flachhalten!

Es ist doch von Anfang an klar, daß niemand hier in SharpDevelop oder VS Code C# entwickelt. Alle versuchen trotzdem, dir mit deinen sehr merkwürdigen Anforderungen zu helfen.

Da muß dir hier niemand irgendetwas beweisen.

Bitte beachte unbedingt [Hinweis] Wie poste ich richtig?

10.11.2020 - 11:46 Uhr

Du warst halt einfach 3 Minuten schneller 😃
Release von .NET 5 und .NET Conf 2020

10.11.2020 - 11:33 Uhr

echdeneth, ich glaube, du hast den Sinn des Forums nicht ganz verstanden!

Das Forum ist nicht dazu da, daß du hier einfach deinen Code postest, und wir ihn für dich analysieren oder debuggen! Wenn du eine konkrete Frage dazu hast, dann frag. Wenn es ein Problem mit dem Code gibt, dann beschreib es.

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 4, 4.2 und 5

09.11.2020 - 12:27 Uhr

Stimmt in meinem Fall nur bedingt...machen für meinen Zweck wenig Sinn...Ich weiß, dass ich dies alles wunderbar über ein Array steuern und auf dem Canvas positionieren kann (wie ich es auch mit Javascript gemacht habe).

Aber in JavaScript hat es ja auch nicht so ganz super geklappt, wie du in deinen anderen Beiträgen geschrieben hast. Deshalb wolltest du ja auch auf C# umsteigen, um es besser zu machen. Wenn du jetzt als erstes damit anfängst, die gleichen Fehler wieder zu machen, dann wirst du in ein paar Monaten wieder dort sein, wo du heute bist. Und dann wirst du wieder denken, das sind Performanceprobleme. Aber das liegt nicht an Performanceproblemen, und auch nicht an JS oder C#, sondern an deiner grundlegend falschen Herangehensweise.

Worauf ich hinaus will ist, dass es hierfür wohl schwierig bis unmöglich wird, ein DataBinding zu benutzen, da die Array-Werte "dynamisch" sind.

Du solltest den Artikel auch mal lesen. Natürlich geht es um dynamische Daten, sonst bräuchte man ja kein DataBinding.

Ob es in meinem Fall besser wäre dieses Programm mit einer einzigen Klasse zu bauen, ist meine Hauptfrage an euch.

Schon die Frage ist natürlich völliger Blödsinn. Niemand würde auf die Idee kommen, eine Anwendung dieser Größenordnung in eine einzige Klasse zu schreiben.
Natürlich wird dich niemand davon abhalten, mit deinem Gefrickel weiterzumachen. Aber du darfst dann halt keine ernstgemeinte Hilfe hier im Forum erwarten, weil niemand so arbeiten würde.

Deine Frage ist das Äquivalent zu "Ich lerne seit letzter Woche Französisch, und jetzt möchte ich einen Roman schreiben. Verwende ich dazu mehrere Sätze, oder kann ich das Buch auch in einem Satz schreiben?". Wenn DAS das Niveau ist, auf dem du hier diskutieren möchtest, dann darfst du dich nicht wundern, wenn die meisten hier im Forum einfach kopfschüttelnd weiterblättern.

Siehe dazu auch der Hinweis von Palladin007 in Wie kann ich Linien bis zu einem Kreisrand auf einem Canvas anzeigen lassen?, der es ziemlich auf den Punkt bringt.

06.11.2020 - 18:25 Uhr

Hättest du wenigstens ein Stichwort oder einen Artikel, welchen ich lesen kann? Wäre sehr nett.

Du mußt wirklich erst einmal von vorne anfangen. Wenn du nicht den Unterschied zwischen Deklaration und Zuweisung von Variablen kennst, dann mußt du dich mit objektorientierter Programmierung beschäftigen. Das sind Konzepte, die in fast allen Sprachen gleich sind.

Hier gibt es ein paar Links für den Einstieg: [FAQ] Wie finde ich den Einstieg in C#?

06.11.2020 - 18:21 Uhr

An welcher Stelle genau gibt es denn überhaupt Performance-Probleme? Beim Berechnen der Daten? Bei der Übertragung? Oder bei der Darstellung? Oder geht es dir darum, wie man den Client über geänderte Datensätze informieren kann?

06.11.2020 - 18:17 Uhr

Es gibt keinen Grund, an ActualWidth/ActualHeight zu binden, um in WPF ein Layout zu erstellen. Es gibt nicht nur das StackPanel, sondern verschiedene Panels für unterschiedene Zwecke: Layout - WPF / Panel Elements and Custom Layout Behaviors

06.11.2020 - 18:14 Uhr

Der Konstruktor eines ViewModels ist der denkbar schlechteste Ort, um ein Dialogfenster anzuzeigen. Oder überhaupt, um irgendeine Logik auszuführen. Du schreibst leider nicht, warum du glaubst, daß das notwendig ist. Daher kann man auch schlecht eine Alternative vorschlagen.

Aber wenn du einen Dialog anzeigen mußt, sobald z.B. ein Fenster geöffnet wird, dann gibt es dafür das entsprechende Ereignis, auf das du reagieren kannst.

06.11.2020 - 18:07 Uhr

Normalerweise würde man zuerst die Business-Logik der Anwendung schreiben, und die ist komplett unabhängig von der verwendeten UI. In deinem Fall wären das Klassen, denen du Parameter übergeben kannst, und die dann die Daten über den gesamten Flugverlauf erzeugen.
Siehe dazu: [Artikel] Drei-Schichten-Architektur

Dann kannst du Tests dafür schreiben, um sicherzustellen, daß die Daten auch richtig berechnet werden. Dazu übergibst du die entsprechenden Parameter, und testest die Daten, die dort berechnet werden.
Siehe dazu: [Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio

Erst im letzten Schritt erstellst du dann die Benutzeroberfläche, damit der Benutzer die Parameter einstellen kann, und die berechneten Daten visualisiert werden. Wenn du WPF verwendest, dann halte dich an das MVVM-Pattern, das ist bei WPF der einfachste und komfortabelste Weg. Dazu mußt du dich aber vorher unbedingt damit auseinandersetzen, wie WPF funktioniert.
Siehe dazu der bereits verlinkte Artikel: [Artikel] MVVM und DataBinding

30.10.2020 - 16:12 Uhr

Du solltest dir mal anschauen, wie asynchrone Programmierung funktioniert. Hier kannst du einfach die asynchronen Methoden verwenden, die dir vom EF zur Verfügung gestellt werden.

30.10.2020 - 11:46 Uhr

Warum sollten die Plugins überhaupt Zugriff auf die Datenbank bekommen? Das sollte eigentlich alles über das Interface gekapselt werden. Sonst könnte man einfach ein Plugin schreiben und die gesamte DB löschen.

30.10.2020 - 11:25 Uhr

[FAQ] Eigene Anwendung pluginfähig machen

Bitte beachte unbedingt [Hinweis] Wie poste ich richtig?, Punkt 1.1 Erst suchen und in die Doku schauen, dann posten

29.10.2020 - 13:31 Uhr

Du schreibst "Textdatei", liest aber Binärdaten (Bytes) aus. Wie speicherst du denn die Daten in die Datei?

Und bei den Zeilenumbrüchen hilft dir evtl. der Modulo-Operator % weiter.

29.10.2020 - 12:32 Uhr

Da mußt du überhaupt nicht mutmaßen oder spekulieren. Den Rückgabetyp siehst du in der Doku zur Where-Methode, oder wenn du in VS mit dem Mauszeiger über über die Methode gehst, oder einfach F12 drückst.

Siehe [Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung und beachte dringend [Hinweis] Wie poste ich richtig?, besonders Punkt 1.

Und poste bitte beim nächsten Mal gleich im richtigen Forum! Das Projekte-Forum ist zur Vorstellung von fertigen Projekten gedacht.

28.10.2020 - 21:39 Uhr

Schau dir doch bitte mal die Doku an, das ist jetzt das dritte Mal, daß dir ein Link dazu gepostet wurde.

Dort findest du Beispiele. So sieht es z.B. aus, wenn du eine Klasse hast, in die du den Rückgabewert vom Server deserialisieren möchtest:

var timeline = await client.GetAsync<HomeTimeline>(request, cancellationToken);

Bitte beachte unbedingt [Hinweis] Wie poste ich richtig?, Punkt 1.1 Erst suchen und in die Doku schauen, dann posten

Wenn du etwas nicht verstehst, helfen wir gerne. Aber wir lesen dir nicht aus der Doku vor 😃

28.10.2020 - 16:26 Uhr

Wenn euer Netzwerk langsam ist, hat das nichts mit der Oracle-DB zu tun. Das betrifft dann auch andere Verbindungen zu den Servern, und das kann man erstmal messen, bevor man wild spekuliert...

27.10.2020 - 21:43 Uhr

Mit "Komprimierung" meinte ich das, was du mit "alle Bilder separat als Datei abspeichere" machst. Dadurch verringerst du doch den Speicherbedarf der Bilder, oder habe ich was falsch verstanden? Wahrscheinlich verwendest du dabei JPG anstatt PNG, oder einfach einen höheren Komprimierungsfaktor als die Standardeinstellung vom FlowDocument.

27.10.2020 - 19:27 Uhr

Als Format verwende ich XamlPackage, nicht RTF.

XamlPackage ist ein völlig anderes Datenformat als XAML. Bisher hattest du nur von XAML geschrieben. XAML wird verwendet, um die TextBox in der UI zu erstellen, aber nicht, um deren Inhalt zu speichern. XamlPackage wird verwendet, um ein FlowDocument zu speichern, also den Inhalt der TextBox. Kein Wunder, daß niemand deiner Erklärung folgen konnte.

XamlPackage ist im Prinzip nur eine ZIP-Datei. Du kannst die Datei in *.zip umbenennen, mit einem ZIP-Programm öffnen, und dann schauen, was sich darin befindet. Da sollten der Text und die eingebetten Bilder als Dateien zu finden sein. Dann kannst du die Dateien extrahieren, neu komprimieren, und wieder in das Package speichern.

Das kann man auch programmatisch machen, der .NET-Framework hat alles, was man zum Lesen und Schreiben von Package-Dateien braucht, siehe dazu die Package-Klasse im System.IO.Packaging-Namespace.

27.10.2020 - 18:51 Uhr

Der Code, den dannoe gepostet hat, ersetzt genau gar nichts 😃
Es werden neue OrderViewModels erzeugt, und dann verworfen, da mit dem Ergebnis nichts gemacht wird. Da die Enumeration selbst gar nicht durchlaufen wird, z.B. mit ToList(), werden noch nicht einmal die OrderViewModels erzeugt.

Entweder ist der Code aus dem Zusammenhang gerissen, oder du hast nicht richtig getestet. Am besten schreibt man sich für so etwas Unit Tests, dann kannst du sicher sein, daß der Code macht, was er soll. Siehe dazu: [Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio

Aber was du zu der TextBox schreibst, klingt eher nach einem Problem mit dem UI-Design.

27.10.2020 - 15:36 Uhr

Bist Du weitergekommen ?

Was wird in ArrayFuellen() gemacht ? Ein Event abonniert ?

Grüße MrSparkle

27.10.2020 - 14:27 Uhr

Wir kennen deine Architektur nicht. Evtl. solltest du erst einmal überlegen, wozu du 2 Clients brauchst ("WebInterface" und WinForms). Reicht da nicht eins?

Ansonsten solltest du dich dringend erstmal zu den Technologien belesen, die du da verwenden willst. Wenn der WebService den Client über eine Datenaktualisierung benachrichtigen muß, kannst du z.B. SignalR verwenden. Für den Anfang reicht evtl. auch erstmal ein "Aktualisieren"-Button aus, mit dem die Daten neu vom Server abholt werden können.

27.10.2020 - 13:45 Uhr

Dafür gibt es bereits das WrapPanel-Control.

Siehe die Antwort von Th69

27.10.2020 - 13:38 Uhr

Filtern von Listen geht in C# am besten über Linq, so z.B.:


var filteredList = list.Where(m => m.TicketId == ticketId && m.LocationId == locationId);

27.10.2020 - 13:33 Uhr

Ja, du kannst auch in PHP WebServices erstellen. Wie das geht, wird dir in einem C#-Forum aber kaum jemand sagen können.

Im Client kannst du z.B. RestSharp verwenden.

27.10.2020 - 12:53 Uhr

Aus dem, was du hier und da schreibst, extrapoliere ich mal, daß du einen WebService erstellen willst, und dafür das Rad neu erfunden hast.

Wie FZelle schon schrieb, gibt es dafür bereits fertige Lösungen. Normalerweise würde der Server die Daten im JSON-Format schicken, und der C#-Client direkt auf die Daten zugreifen. Dafür braucht man weder HTML, noch JavaScript, noch CefSharp.

das werde ich mir in naher zukunft dennoch anschauen.

Ich würde dir dringend empfehlen, sofort damit aufzuhören, solchen Code zusammenzuprogrammieren, dich erst einmal zu belesen und zu schauen, wie andere Leute das machen, welche fertigen Tools es dafür gibt, und wie man diese anwendet. Und dann noch einmal ganz von vorne anzufangen, über deine Umsetzung nachzudenken.

26.10.2020 - 20:55 Uhr

Wenn ich deinen Versuchsaufbau richtig verstehe: Du mußt in PHP einen JavaScript-Code erstellen, der dann eine Variable mit der IP-Adresse erstellt, die du per JS als Parameter an die C#-Methode übergibst. Ob das sinnvoll ist, ist eine andere Frage...

Evtl. solltest du mal erklären, was du _eigentlich _vor hast, und wieso du ausgerechnet auf _diese _Weise mit dem Webserver kommunizieren willst.

@Beitrag auf
>

Bitte beachte unbedingt [Hinweis] Wie poste ich richtig?, Punkt 2.2 Keine Crossposts.

Da du selbst auf den anderen Post hinweist, laß ich den Beitrag mal offen. Normalerweise werden hier Crossposts ohne Ausnahme geschlossen. Das gilt übrigens für viele andere Foren auch.

26.10.2020 - 18:02 Uhr

Kannst du bitte deinen Code mit Code-Tags formatieren? Das läßt sich wesentlich besser lesen. Siehe [Hinweis] Wie poste ich richtig?

Du kannst auch die Resource im Konstruktor übergeben, anstatt dem Dateinamen.

Ganz allgemein dazu: [FAQ] Kommunikation von 2 Forms

26.10.2020 - 12:43 Uhr

Aber wer auch immer den Titel geändert hat, hat das Problem nicht verstanden.

Du kannst den Titel jederzeit selbst anpassen. Dazu gibt es den Editieren-Button 😃

Das Problem selbst hat nichts mit dem AutoMapper zu tun. Der AutoMapper setzt nur Eigenschaftswerte entsprechend deiner Konfiguration.

Das Problem würde genauso auftreten, wenn du die Objekte manuell mappst und die einzelnen Werte per Hand setzt.

26.10.2020 - 12:26 Uhr

@witte: Das würde aber nichts an dem Problem ändern.

@JimStark: Kannst du bitte zukünftig [Hinweis] Wie poste ich richtig? beachten, besonders Punkt 1.2: Nur ein Thema pro Thread? Wir müssen jedesmal deine Beiträge verschieben...

Zu deinem Problem: Wenn der Benutzer das ViewModel geändert hat, und die Änderungen in die Datenbank geschrieben wurden, dann ist doch das ViewModel auf dem aktuellen Stand. Wozu sollte man dann alles noch einmal neu laden?

Das wäre nur notwendig, wenn die Daten außerhalb der Anwendung geändert wurden. Und dann darfst du die ViewModels eben nicht ersetzen, sondern mußt die vorhandenen anpassen.

22.10.2020 - 15:59 Uhr

Du könntest im ViewModel eine Eigenschaft CurrentPage implementieren, die in der View an ein ContentControl gebunden ist. Dann kannst du dort per DataTemplate die View je nach ausgewählter Seite definieren.

Siehe [Artikel] MVVM und DataBinding, Abschnitt Templates

22.10.2020 - 13:08 Uhr

Brötchen, Tanken, ich zahle alles mit der KK. Bargeld habe ich kaum noch dabei.

Wow, echt jetzt? Warum sollte man Banken und Kreditkartenunternehmen alle Informationen über seinen Tagesablauf und seine Konsumgewohnheiten ohne irgendwelche Gegenleistungen anvertrauen? Das sind doch genau die Unternehmen, denen man soetwas eigentlich gerade nicht anvertrauen sollte.

Ich habe mitterweile 5 Kreditkarten angesammelt (privat und geschäftlich, in Deutschland und im Ausland), aber Brötchen habe ich in meinem ganzen Leben noch nicht damit gekauft...

22.10.2020 - 12:43 Uhr

Meine Codevariante funktioniert leider nicht.

Wenn du beim nächsten Mal schreibst, was nicht funktioniert, kann man dir auch dabei helfen, den Fehler zu finden. "Funktioniert nicht" ist keine Fehlerbeschreibung, mit der irgendjemand etwas anfangen kann.

Siehe [Hinweis] Wie poste ich richtig?, besonders Punkt 5

22.10.2020 - 12:40 Uhr

Das Thema wurde bereits mehrfach besprochen, z.B. hier: WPF: Öffnen eines neuen Windows

Kurz gesagt gibt es folgende Möglichkeiten:*Window.Show() im Command aufrufen und damit das MVVM-Pattern zu verletzen, *Einen WindowsService implementieren oder eine fertige Implementierung aus einem MVVM-Framework verwenden, *Gar keine Fenster verwenden, sondern Bereiche im Hauptfenster ein- und ausblenden

Ich selbst benutze im Prinzip nur die letzte Variante, das ist am einfachsten umzusetzen (über ein DataTemplate pro Bereich) und am übersichtlichsten für den Benutzer.