Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Papst
Thema: Datensätze auf mehreren Clients synchron halten
Am im Forum: Datentechnologien

Für dein Szenario: Weil die Datenbank nicht pushen kann.

Für generell: Um den Datenbank austauschbar zu machen und den Zugriff zu kapseln.
HTTP bietet ganz andere Möglichkeiten als das Datenbank Protokoll

Thema: ComboBox mit Werten aus Enum befüllen
Am im Forum: GUI: WPF und XAML

In WPF geht das sehr gut mit einem ObjectDataProvider:


 <ObjectDataProvider x:Key="eMyItems" MethodName="GetValues" ObjectType="{x:Type System:Enum}">
  <ObjectDataProvider.MethodParameters>
    <x:Type TypeName="Enums:MyEnum"/>
  </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

unter der StaticResource "eMyItems" steht es dann zum Databinden bereit.

Thema: Strings splitten und speichern
Am im Forum: Grundlagen von C#

Hi,

ohne es zu probieren tippe ich mal - so wie du es dort reinkopiert hast kompiliert es nicht.
Sowohl lines, lines2, als auch SplitAndRead() gehören zu keiner Klasse.

Schau dir einmal an, was der Unterschied zwischen einem Array und eine Liste ist, das sieht aus, als würdest du die Liste wie ein Array verwenden. Außerdem würdest du dir vermutlich Einträge überschreiben so wie du es dort implementiert hast.

Was ist denn das Kriterium, dass etwas in der Liste lines2 gespeichert werden soll?
Wenn dort Zeile 3 und 4 gespeichert werden soll müsstest du einfach ausserhalb der foreach-Schleife folgendes machen:


lines2.Add($"{NeuerString[2]};{NeuerString[3]}");
(Natürlich vorher prüfen ob 2 und 3 Elemente von NeuerString sind!)
Das ist aber nicht was du vorhast oder?

Thema: Wie kann ich HEX in Form "0xFF" in Viererfolge abbilden?
Am im Forum: Grundlagen von C#

Das könnte ein Big-/Littleendian Problem sein.
Sprich, es könnte sein, dass du die Bytes in der anderen Reihenfolge schicken musst.

Thema: OleDB - Fehler beim Auslesen einer DB auf andernen PCs
Am im Forum: Office-Technologien

Hi,

das kann viel sein, angefangen bei der Firewall deines und des anderen PC's bis hin zur Konfigurations des DBMS.
Was kommt denn für eine Fehlermeldung?

Thema: Nach Angabe eines SharpPcap-Filters die Werte anzeigen lassen
Am im Forum: Netzwerktechnologien

Werden überhaupt Pakete empfangen?
Also kommt etwas in deinem Programm an, wenn du den Filter weglässt?

Läuft WinPcap? Den Treiber brauchst du um überhaupt etwas zu empfangen.

Thema: ListView mit Formular -> SelectionChanged prüfen ob Änderungen
Am im Forum: GUI: WPF und XAML

Nein - das solltest du dir auch selber beantworten können - schließlich hast du nichts dergleichen implementiert.

Das was du hier implementiert hast, liest die Daten aus der Datenbank und die GUI stellt fest, wenn du dies tust (INotifyPropertyChanged).

Was nicht festgestellt wird ist:
* Wenn etwas an einem User geändert wird
* Wenn der selektierte Benutzer gewechselt wird

Wie du das wechseln erkennen kannst hatte ich oben geschrieben. Wenn du erkennen möchtest, ob an einem Benutzer etwas geändert wurde, brauchst du soetwas wie ein "IsDirty" Flag:


class UserViewModel
{
	private string _name;
	
	public string Name
	{
		get { return _name; }
		set
		{
			_name = value;
			IsDirty = true;
		}
	}

	public bool IsDirty { get; set; } = false;
}
Damit kannst du dann beim Wechsel herausfinden, ob etwas an dem Benutzer geändert wurde.

Thema: Label Array mit vorhandenen Labels verknüpfen
Am im Forum: Grundlagen von C#

Hi,

ich weiß, das mag man nicht hören, aber das schreibt nach einem Designfehler.
Einfachste Lösung wäre die Label gleich in dem Array zu erstellen. Andererseits klingt Label sehr nach Oberflächenlogik. Bei WPF würde ich hier sagen, dass man die am besten nicht per Code direkt anfasst, für WinForms kann ich dazu leider keine Aussage machen.

Thema: ListView mit Formular -> SelectionChanged prüfen ob Änderungen
Am im Forum: GUI: WPF und XAML

Das selektierte Element ist kein Teil der Collection/Liste, sondern ein Teil der Oberfläche. Insofern wirst du auch bei einer ObservableCollection<T> nicht mitbekommen, wenn sich das selektierte Element ändert, diese reagiert nur auf Änderungen der Collection.

Es gibt denke ich zwei Elegante Lösungen hierfür:

  • SelectedItem der Oberfläche an eine Property aus dem ViewModel binden
  • Per Interactivity ein ICommand auslösen, wenn sich das selektierte Element ändert.

Edit: Tippfehler

Thema: Abfangen und Weiterleiten von UDP Datagrammen von beliebegen Quellen und Ports (Broadcast)
Am im Forum: Netzwerktechnologien

Das Programm Wireshark macht das mithilfe des Treiber/Dienstes "WinPcap".
Hierfür gibt es einen oder vllt sogar eine Handvoll .NET Wrapper, die dir helfen dürften.... z.B.: https://github.com/PcapDotNet/Pcap.Net

Thema: Datagrid durch Auswahl aus ComboBox filtern
Am im Forum: GUI: WPF und XAML

Hi,

du bindest an beide Controls die gleiche Datenquelle.
Wenn du im Abhängigkeit von der einen in der anderen etwas darstellen möchtest müsstest du diese Abhängigkeite auch darstellen.

In WPF geht das am besten (und am einfachsten) über das MVVM. Ich würde dir folgende Beiträge dazu empfehlen:
[Artikel] Drei-Schichten-Architektur
[Artikel] MVVM und DataBinding

Thema: Testen, wie mein Programm unter Windows 7 aussieht?
Am im Forum: GUI: WPF und XAML

Einen Windows 7 Emulator bringt VS nicht mit, aber du könntest unter Hyper-V oder einer VM Engine deiner Wahl eine Windows 7 Installation deployen.
Alternativ natürlich
- eine VM anmieten (online)
- bei jemanden mittels Teamviewer o.ä. Tools testen
- ...

Thema: PDF Dokument oder Word Datei als Anlage in eine Access Datenbank einfügen?
Am im Forum: Datentechnologien

Nur der Vollständigkeit halber: Es ist auch keine gute Idee in einer MySQL Datenbank Dateien zu speichern.

Generell gilt das für alle relationalen Datenbanken.

Thema: Zugriff auf Images ausserhalb eines Projektes (Images befinden sich aber in der Solution)
Am im Forum: GUI: WPF und XAML

Bette sie in das Projekt (oder ein extra Projekt) als Resource ein.
Dafür müssen diese nicht im gleichen Verzeichnis liegen, über
Contextmenu > Add > Add existing Item
kannst du sie in einem beliebigen Verzeichnis hinzufügen. Dann sind sie auch unter der Property Source im Dropdown verfügbar.

(Ob das nachher klug und handelbar ist, musst du allerdings selber entscheiden)

Thema: Menüleiste mit Gruppen
Am im Forum: GUI: WPF und XAML

Das sieht fast aus wie eine Aufgabe für ein TreeView.

Thema: Zeitspanne zwischen Atomuhr und Windows Uhr ermitteln (auf 100ms genau)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Nicht extra Hardware, kompatible Hardware.

Bei der Recherche gerade habe ich dann festgestellt, dass ich mich geirrt habe.. das war nicht NTP, sondern das betrifft PTP (Precision Time Protocol), hierbei ist es notwendig, die Paketlauzeit in hin- und rückrichtung (am besten symmetrisch) zu kennen.
Um das zu ermöglichen gibt es bei PTP-fähigen Geräten die sog. Boundary Clock, die es dann ermöglicht die Uhrzeit von Netzwerkgerät zu Netzwerkgerät durchzugeben.

Quelle: http://www.pdv.reutlingen-university.de/rte/White_paper_ieee1588_de_v1-2.pdf

Ich meine mich zu erinnern, dass es es ebenfalls eine Einrichtung gibt, die diese Synchronisation Protokolle aus Hardware Basis routet um keine variable Zeitverschiebung durch eine Software zu bekommen (ein paralleles Register innerhalb des Switch sorgt dann dafür, dass dieses Telegramm an der Software vorbei durchgeroutet wird).
Das habe ich auf die schnelle aber nicht gefunden.

Thema: Zeitspanne zwischen Atomuhr und Windows Uhr ermitteln (auf 100ms genau)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Damit das mit (S)NTP PTP vernünftig auf einer solchen ms Basis funktioniert, muss die zwischengeschaltete Hardware (Switches etc.) die NTP PTP Telegramme aber auch entsprechend durchleiten.
Idr. ist das durch Hardware gelöst um ein solches Telegramm zeitgleich mit dem Empfangen zu senden ohne dass dort ein Prozessor dazwischen liegt.

Da kann man sich, wenn man das über das Internet synchronisiert nicht unbedingt drauf verlassen. Im LAN sollte man dann die eigenen Netzwerkkomponenten kennen.

Ob das in Summe 100ms ausmachen kann, kommt sicherlich auf das routing an, kann ich aber aus meinen Erfahrungswerten nur schlecht abschätzen.
Allerdings sind wir bei einer solchen Synchronisierung einmal ziemlich auf die Nase gefallen, als wir Logdaten von mehreren Geräten vergleichen wollten die eigentlich Synchron sein sollten - es dann aber nicht waren.

Thema: WPF Beim Datepicker Kalenderwoche mit anzeigen
Am im Forum: GUI: WPF und XAML

An den Controls hat es leider schon länger keine Weiterentwicklung gegeben.
Ich bin auch nicht sicher, ob der DatePicker das standardmäßig unterstützt, aber vielleicht hilft die das hier weiter:
WPF: Calendar and Datepicker -Final

Thema: C# LAN Chat ohne zusätzliche Server-Anwendung
Am im Forum: Netzwerktechnologien

Mit UDP Broadcast sollte das relativ simpel machbar sein.
Du müsstest nur zur Synchronisation (z.B. wer ist gerade online) von jedem immer mal wieder etwas verschicken.

Thema: Form verstecken mit hide() lässt Form nicht verschwinden
Am im Forum: Grundlagen von C#

Das müsstest du dir selber beantworten können.

Wenn du einfach nur das Event änderst, sollte es die wenigsten Auswirkungen haben.

Thema: Form verstecken mit hide() lässt Form nicht verschwinden
Am im Forum: Grundlagen von C#

WPF verwenden ;)

Es gibt verschiedene Möglichkeiten, das was mir auf Anhieb einfällt:

a) Das Programm fällt nach schließen der letzten Form zurück in die statische Main()
b) Das Schließen Event des Form abbonieren
c) Ein anderes Event zum verstecken nutzen (z.B. Show)

Thema: Form verstecken mit hide() lässt Form nicht verschwinden
Am im Forum: Grundlagen von C#

Google sagt dazu (http://stackoverflow.com/questions/7003587/why-isnt-this-hide-working-in-form1-load-event), dass das Load Event zum tragen kommt, bevor das Form überhaupt angezeigt wird.

Wenn du es hier verstecken willst, wird das "anzeigen" später noch einmal getriggert und wird dein Verstecken überschreiben.

Musst du zwingend das Form hier schon erzeugen?
Reicht es nicht, dass später zu tun, wenn du es wirklich brauchst?

Thema: Form verstecken mit hide() lässt Form nicht verschwinden
Am im Forum: Grundlagen von C#

Was genau heißt denn "klappt irgendwas nicht" ?

Thema: Zur Laufzeit geänderter Datakontext wird in View nicht aktualisiert
Am im Forum: GUI: WPF und XAML

Dein Problem war, dass du zwei Unterschiedliche Instanzen deines Viewmodels verwendet hast.
Ich würde wetten, du hast irgendwo ein solches Statement:


<xyz.Ressources>
<namespace:HexagonViewModel x:Key="ViewModel" />
</xyz.Ressources>

Thema: Zur Laufzeit geänderter Datakontext wird in View nicht aktualisiert
Am im Forum: GUI: WPF und XAML

Zitat von DeSharper
Zusätzlich hätte ich noch eine Frage. Ich hab beim Lesen immer nur Parameterlose Konstruktoren bei ViewModels gesehen. Muss das so sein? Ist es eine doofe Idee auf diese Art, also über die Parameter des Konstruktors, die Eigenschaften des Viewmodels festzulegen? Und kann ich verhindern, dass der parameterlose Konstruktor aufgerufen wird und direkt meinen "echten" Konstruktor verwenden? Den andern hab ich ja nur, weil sonst der compiler meckert.

Der parameterlose Konstruktor wird vom Visual Studio Designer benötigt. Auch, wenn du das ViewModel aus dem View instanziierst, was du zu machen scheinst, denn du verwendest beim Binding ein StaticResource (also eine in XAML, in einem übergeordneten Resource Dictionary instanziiertes Objekt; keine statische Implementierung).

Du scheinst zwei Instanzen deines ViewModels zu benutzen, einmal die StaticResource (s.o.) und einmal die Instanz aus der Code Behind.
Ich würde hier eher die Instanz aus der Code Behind entfernen und schauen, dass du diese "sauber" hälst, anstatt die aus dem ResourceDictionary.

Thema: Zur Laufzeit geänderter Datakontext wird in View nicht aktualisiert
Am im Forum: GUI: WPF und XAML

Hi,

du benötigst in deinem ViewModel keine DepencyProperty und auch keine Vererbung auf das DepencyObject.
Um Änderungen im ViewModel an die View weiterzugeben, muss dein ViewModel INotifyPropertyChanged implementieren.

Ein Beispiel findest du hier: [Artikel] INotifyPropertyChanged implementieren

Thema: WPF Datagrid - Erste Datenreihe fixieren
Am im Forum: GUI: WPF und XAML

Das Exceed bietet auf die Weise, in der ich es einmal genutzt habe leider auch nur Columns als frozen an (https://xceed.com/wp-content/documentation/xceed-datagrid-for-wpf/webframe.html#Xceed.Wpf.DataGrid.v5.9~Xceed.Wpf.DataGrid.Views.TableView.html)

Thema: WPF Datagrid - Erste Datenreihe fixieren
Am im Forum: GUI: WPF und XAML

Hilft dir das weiter?http://stackoverflow.com/questions/13774417/how-does-wpf-datagrid-get-frozen-rows-columns-working

Ansonsten meine ich gibt es bei dem DataGrid von exceed (http://wpftoolkit.codeplex.com/) diese Möglichkeit von Hause aus.

Thema: UNC Path: Backslash \ kommt doppelt vor
Am im Forum: Grundlagen von C#

Verstehst du, warum das so ist?
Sonst wäre ja der Beitrag sinnlos :)
2.4.4.5 Zeichenfolgenliterale

Thema: Wie inkludiere ich eine SQLite Datenbank in Projektexport?
Am im Forum: Datentechnologien

Da gibt es so viele Möglichkeiten, wie du dir ausmalen kannst :)

Gängig ist denke ich die Datenbank mit dem Installer mit verteilen zu lassen. Oder aber auch das von dir angesprochene "Startup".
Es kommt dabei auf den Anwendungszweck an. Der Installer macht sicherlich weniger Arbeit, aber wenn du die Datei dann im Benutzverzeichnis des aktuellen Benutzers ablegst kommt es zu fehlern, wenn ein anderer Benutzer sich am PC anmeldet und versucht die Applikation zu starten.

Weniger gängig wäre die Datenbankdatei in die Applikation einzubetten und beim Start zu kopieren.

Unter C:\Programme würde ich die Datei allerdings nicht ablegen, hier hat die Applikation idr. keinen Schreibzugriff.