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 wizer
Thema: Xbox Video - Umsetzung dieses Listenstils
Am im Forum: GUI: WPF und XAML

Richtig, mit einer ListView geht sowas wunderbar!

Zum Thema "Bilder sollen erst geladen werden wenn sie wirklich sichtbar werden". Genau für so einen Fall verwendet man das WrapGrid. Dieses Control unterstützt Virtualisierung des Inhaltes, was soviel bedeutet wie, die Items werden erst dann gerendert, wenn sie in den Fokus kommen.
MSDN: "The content of a WrapGrid is virtualized. This can improve performance when you work with large data sets. For more info, see Load, store, and display large sets of data efficiently." https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.wrapgrid.aspx

Jetzt kannst du sagen, erst wenn deine Getter-Property in deinem ViewModel angesprochen wird, lädst du das Bild. Beispiel:


private ImageSource _image;
public ImageSource Image
{
 get 
 {
   if (_image != null) return _image; 
  
   LoadImageAsync();
   return _image;
}

Die Methode LoadImageAsync machst wie der Name schon sagt asynchron. Wenn du sie dann noch innerhalb eines neuen Task startest, blockierst du auch nicht die UI:

Task.Run(async () => await LoadImageAsync());

Den Task den du von Task.Run zurück bekommst, speicherst du dir in eine Variable um zu prüfen ob der Task schon läuft (in deinem Getter). Dadurch verhinderst du mehrfaches laden des Bildes.

Lg

Thema: WinRT Series Manager: Collaborator/Contributor gesucht
Am im Forum: Projekte

Hallo Community!

Ich suche leidenschaftliche Programmierer die bereits einiges mit der Windows Runtime programmiert haben (Win8,Win81,WP8,WP81, Universal App) und etwas zu meinem Gemeinschaftsprojekt beitragen wollen. Techniken wie Dependency Injection, MVVM, Unit Testing, Patterns (best practices), Logging, ... wären von Vorteil da vieles davon im Code vorkommt.

Das Projekt ist eine Serien Bibliothek die es einem erlaubt nach Serien zu suchen und sich darüber zu informieren. Die API erlaubt es zu einer Serie Staffeln, Episoden, Schauspieler, Fanarts und noch weitere generelle Informationen anzuzeigen. Die App soll einen darüber informieren wenn neue Folgen erschienen sind bzw wann diese erscheinen.

Die verwendete API ist TheTVDB (http://www.thetvdb.com).
Der API Wrapper ist schon weit fortgeschritten, wenn nicht sogar schon fertig. Zu finden ist dieser auf GitHub (https://github.com/ViktorHofer/TheTVDBSharp).

Der derzeitige Status des Projektes verspricht sehr viel Potenzial. Architektur wurde bereits aufgebaut, Web Schnittstelle und Caching ist auch bereits registriert. Im Prinzip muss die App nur noch mit mehr Leben gefüllt werden (die Serien Page fehlt noch komplett). Die App ist bereits benutzbar und erlaubt es einem nach Serien zu suchen und diese zu favorisieren und auf der Startseite anzuzeigen.

Falls jemand Interesse an dem Projekt hat bitte auf GitHub vorbei schauen und entweder forken oder mir schreiben um als Collaborator aufgenommen zu werden.
https://github.com/ViktorHofer/SeriesManager

Liebe Grüße
Viktor Hofer

Thema: XPS-Drucken: XPS Datei direkt drucken statt per Process.StartInfo.Verb = "print"
Am im Forum: Rund um die Programmierung

Hallo Community!

Ich habe das folgende Problem. Ich habe bei mir zu Hause einen "Server" PC der mit einem Canon LBP2900 Drucker verbunden ist. Dieser Drucker ist auch als Netzwerkdrucker freigegeben. Leider gibt es für den Drucker nur 32-Bit Treiber (es gibt zwar 64-Bit Treiber, diese sind jedoch sehr fehlerhaft und bringen den Spooler ständig zum Absturz). Das Problem ist jetzt, dass alle 32-Bit Maschinen im Netzwerk zwar ganz normal drucken können, ein 64-Bit Nutzer jedoch nicht, da die Treiber fehlen. Deshalb bin ich jetzt den folgenden Weg gegangen:

Ich habe einen C# Windows Form geschrieben, die als virtueller Spooler dient. Das Programm macht nichts anderes, als zu überwachen ob XPS Files im druckordner vorhanden sind. Ich habe XPS gewählt, da dadurch ein unabhängiges Format gewählt wurde und standardmäßig ein XPS Printer auf Vista und 7 installiert ist.

Wenn nun eine neue XPS File in dem Ordner liegt, soll dieses gedruckt werden. Dies habe ich bis jetzt so realisiert:

foreach (string s in Directory.GetFiles(textBox1.Text))
            {
                Process printJob = new Process();
                printJob.StartInfo.FileName = s;
                printJob.StartInfo.UseShellExecute = true;
                printJob.StartInfo.Verb = "print";
                printJob.Start();

                Thread.Sleep(5000);
                SendKeys.Send("{ENTER}");
            }

Diese Lösung ist leider nicht vorteilhaft, da dies ein sehr unsauberer Weg ist. Nun wollte ich fragen, ob es überhaupt möglich ist in einer Windows Form eine XPS Datei direkt zu drucken?

Oda liege ich möglicherweise komplett falsch und es gibt eine viel bessere Lösung für das Treiberproblem?

Ich danke für Eure Antworten!

Mfg wizer

Thema: Resourcenauslagerung per Serialization
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ja die Grafiken sollten von außen ja nicht verfügbar sein, da sie sonst verändert werden könnten und das wäre sehr schlecht. Ich würde gerne einen anderen Weg gehen als mit der Ressource DLL. Ich schau mal wies so ausschaut...

Mfg wizer

Thema: Resourcenauslagerung per Serialization
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Liebe Community!

Zurzeit versuche ich, bei meinen Applikationen Resourcen wie zum Beispiel Grafiken so gut wie möglich auszulagern. Dazu serialisiere ich zuerst alle Grafiken in eine Datei und gebe diese Datei dann dem eigentlichen Programm mit. Dieses deserialisiert die Datei dann wieder und greift auf die Grafiken zu. Leider habe ich noch niemanden gesehen, der wie ich vorgeht deshalb wollte ich fragen, ob dieses Konzept klug ist und ob es Nachteile dabei gibt?

Ebenso dachte ich mir, dass ich ein Programm erstelle, welches mir die Arbeit abnimmt und automatisch sollte Dateien erstellen kann. Gibt es hierbei ein Interesse?

Mfg wizer

Thema: updateSystem.NET
Am im Forum: Projekte

Ja genau sowas wie progressOverlay halt nur statt einer progessbar ein UserControl. Aber ich werd mir da schon weiterhelfen können :)
Danke für die Antwort!

Mfg wizer

Thema: HelpTool
Am im Forum: Projekte

Ja das mit den Updates ist ein wenig eigenartig... Ich werde standardmäßig den Punkt "Auf Aktualisierungen prüfen" auf false setzen. Der Fehler, dass das Programm und das Update gleichzeitig läuft habe ich jetzt schon behoben, also ab der neueren Version.

Der Start der Anwendung dauert in der Tat wegen der Suche nach Updates sehr lange. Ich hab schon versucht den Updatevorgang asynchron zu gestalten, nur kamen da einige Fehler zum Vorschein, die ich nicht so leicht beheben konnte, steht aber auf jeden Fall auf meiner TODO Liste

Das pausieren und stoppen von Prozessen ist ohne weiteres möglich Wichtig ist nur, dass man bei Prozessen mit Netzwerktechnologie beachtet, dass der Netzwerk eventuell nach einiger Zeit abreißen kann.

Ich werde die neue Version, wenn die asynchrone Updatesuche funktioniert, als Setup hier hochladen, damit ab dann nur noch per Update neue Versionen geladen werden müssen/können.

Danke für das Feedback

Mfg wizer

Thema: HelpTool
Am im Forum: Projekte

Hey Lennart!

Danke für das Feedback! Die Probleme wurden nun behoben.
Die Black-Screen Funktion macht nichts anderes, als den Bildschirm dunkel zu machen, entweder für eine bestimmte zeit oder bis zum erneuten betätigen der ausgewählten Taste. Das Aktualisierungsintervall ist dafür da, damit man bestimmt wie oft die Funktion zum dunkel machen des Bildschirms aufgerufen werden soll, damit sie zum Beispiel schneller ist als Spiele die ja laufend im Bildschirm etwas zeichnen und so wieder den Bildschirm hell machen wollen.

Mfg wizer

PS: Update wird gleich hochgeladen :)

Thema: HelpTool
Am im Forum: Projekte

Danke, das war auch eines meiner Ziele. Leider schränkt einen die Optik als Programmierer selbst auch oft stark ein ;)

Das einzige was ich selbst noch gern ändern würde an der Optik sind die Tabpages bzw das TabControl. Ich werde einfach mal nach einer "schöneren" Variante suchen ;)

Mfg wizer

Thema: updateSystem.NET
Am im Forum: Projekte

Maximillian kurze Frage:

Wie hast du das mit den Popup Panels und dem Abdunkeln des Hintergrunds gelöst? Gibt es da nen fertigen Code oder ein Sample? Ich würd das auch gern in meinem Programm einbauen.

Mfg wizer

Thema: HelpTool
Am im Forum: Projekte

Liebe Community!

Es ist wieder einiges an Zeit vergangen und ich war nicht gerade untätig und hab natürlich weiter daran gearbeitet, das HelpTool zu verbessern. Die Netzwerk-Schicht und ein wirklich kleines Plugin System sind nun integriert. Auch wurde nahezu der gesamte Code umgeschrieben. Ich hoffe ihr seit mit dem Ergebnis zufrieden.

PS: Ich freue mich SEHR auf Rückmeldung :)

Normalerweise geb ich das HelpTool per Setup weiter aber für euch hier die RAR <<Download>>
oder der Download im zweiten Beitrag

Thema: P2P-Chat System
Am im Forum: Projekte

Hey das ist echt ein tolles Projekt! Funktioniert sehr gut. Du solltest du den Source auch Windows 7 kompatibel gestalten, da Dns.GetHostEntry immer eine Exception auslöst, da auch IPv6 Adressen geladen werden. Ich selbst würde auch die Klassen p2psocket und Protocol Chat unabhängig entwickeln, damit man sie für alle möglichen Vorstellungen nutzen könnte.

Lg wizer

Thema: Dateiendung mit Programm verbinden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke! Hat super funktioniert :)

Thema: Dateiendung mit Programm verbinden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Tut mir leid, dass ich ein so altes Thema ausgrabe, aber ich habe eine Frage dazu.

Herbivore schrieb:

Zitat
Damit sichergestellt ist, dass alle Änderungen im Windows-Explorer sofort wirksam werden, muss die Win32-Funktion SHNotifyChange aufgerufen werden.

Jedoch habe ich gesucht, leider aber nicht gefunden wie ich die Funktion aufrufen kann. Es wäre sehr nett , wenn mir jemand erklären könnte, wie ich das am besten anstelle.

Mfg wizer

Thema: HelpTool
Am im Forum: Projekte

Wenn du zum Beispiel zu dritt ein Spiel über Lan am laufen hast und es dabei keine Pause Funktion gibt (bsp. cod5) könnt ihr das Spiel einfach über den eingestellten Hotkey im Einstellungsdialog anhalten. Das müssen natürlich alle machen, da einfach der Prozess angehalten wird. Also entweder im Lan Modus oder wenn ihr ein Lan über Hamachi simuliert. In der zukünftigen Version wird zusätzlich noch ein Plugin für Hamachi integriert, mit dem man einstlellen kann, das das Spiel, auch wenn nur einer auf den Pause Hotkey klickt, auf allen PCs pausiert wird. Sozusagen also Remotecontrol. Das muss man natürlich bestätigen und vorher die anzuhaltenden PCs auswählen.

Lg wizer

Thema: HelpTool
Am im Forum: Projekte

Neuerster Stand:

Mit der Version 0.3.1.10 (erhältlich via Update) habe ich nun endlich den letzten nervigen Bug gefunden, der das Programm nach einiger Zeit zum Absturz bringen konnte.

Besonders für Lan-Spieler ist dieses Tool sehr interessant, da ihr damit auch in jenen Spielen, in denen es keine Pause Funktion gibt, das Spiel einfach anhalten könnt.

PS: Kommentare wären sehr nett ;)

Lg wizer

Thema: Exception UnsafeNativeMethods?!?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Nein nichts von beidem. Hab aber jetzt das Problem gefunden. Ich verwende global hooks in meinem Programm und anscheinend ist die global hook klasse von codeproject etwas fehlerhaft. Ich hab jetzt eine andere genommen und alles funktioniert wunderbar :)

Lg

Thema: Exception UnsafeNativeMethods?!?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hey ein Freund von mir bekommt immer wieder nach einiger Zeit diese Exception. Das Programm läuft im Hintergrund (notifyIcon). Ich kann mit der Exception leider gar nichts anfangen und hab auch schon gegoogelt, leider nichts sinnvolles gefunden :(

Zitat
Exception:
Message: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
Source: System.Windows.Forms
StackTrace: bei System.Windows.Forms.UnsafeNativeMethods.PeekMessage(MSG& msg, HandleRef hwnd, Int32 msgMin, Int32 msgMax, Int32 remove)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms. UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.Run()
bei HelpTool.Program.Main(String[] args)

Könnt ihr mir vielleicht helfen?

Lg wizer

Thema: updateSystem.NET
Am im Forum: Projekte

Hey arbeitest du noch an dem Updater?

Ich benutze ihn für eines meiner Projekte und bin überaus begeistert davon! Leider gibt es noch ein paar Kleinigkeiten die man ändern könnte. Beispielsweise würde ich gerne steuern können, ob der Dialog, dass das Update erfolgreich verlaufen ist, angezeigt werden soll oder nicht. Denn ich habe direkt nach dem kopieren der Dateien das Starten des Prozesses drinnen und dann überlappt sich deine Meldung mit meinem Programm. Könntest du das irgendwie einrichten?

Außerdem wie hast du es hinbekommen, dass bei der Sicherheitsabfrage, ob der Updater wirklich gestartet werden soll, nicht unbekannter Autor sondern dein Name steht?

Außerdem gibt es manchmal einen Bug, wenn ich bei einem Update einen Ordner im $appdata Verzeichnis erstellen lasse, dass der Inhalt, zb. Dlls die ich dazugeben, nicht gespeichert werden...

Mfg wizer

Thema: HelpTool
Am im Forum: Projekte

Liebe Community!

Ich möchte euch mein neuestes Projekt HelpTool vorstellen. Bei dem Tool handelt es sich um ein Programm, welches ein paar nützliche Funktionen für PC-Spieler oder Serveradministratoren bereitstellt.

Das Programm bietet folgende Möglichkeiten:

  • Black-Screen Funktion (Bildschirm abdunkeln für eine bestimmte Zeitspanne oder bis zur erneuten Betätigung der Auslösertaste)
  • Pause-Funktion (Entweder aktueller Prozess oder selbst gewählter Prozess)
  • Plugin-System (noch in Entwicklung aber schon recht solide)
  • Automatisches Updatesystem
  • Unterdrückung der Windows-Taste
  • Aktivierung jeder Funktion mit global keyboard hooks


Ein Bild spricht mehr als tausend Worte, deshalb seht selbst. (Bild im Anhang)

Voraussetzungen:
  • .NET Framework 3.5
  • Administratorrechte (Aufruf der BlockInput-Function, welche beim BlackScreener eingesetzt wird, benötigt Admin-Rechte, siehe: Link MSDN)


Lg wizer

Thema: Modern MessageBoxes/ProgressBoxes
Am im Forum: .NET-Komponenten und C#-Snippets

Tut mir leid für meine lange Abwesenheit hier im Forum. Zu dem Projekt:

Ich habe keinen Sourcecode mehr!! Sorry...

Ich hab alles selbst gezeichnet und zb ProgressBars selbst programmiert. Diese Dialoge bekommt man von nirgends her.

PS: Vielleicht erstellte ich das Projekt wieder neu, nur diesmal richtig ;) (threading :D)

Mfg
wizer

Thema: Vier gewinnt
Am im Forum: Rund um die Programmierung

Hier mein Projekt: Klick mich

Thema: Vier-Gewinnt (wieder mal ^^]
Am im Forum: Projekte

Source:

Thema: Vier-Gewinnt (wieder mal ^^]
Am im Forum: Projekte

Hi. Sry hab wirklich vergessen im OnPaint zu zeichnen. Also hier jetzt das Beispiel und der Source!

mfg wizer

PS: Ja ob man gewonnen hat oder nicht lässt sich sicher leicht berrechnen. Ein paar Schleifen ... hatte jedoch bis jetzt noch keine zeit dafür ^^

Thema: Vier-Gewinnt (wieder mal ^^]
Am im Forum: Projekte

Ausgehend von einem Thread den ich hier im Forum gelesen habe, bei dem es darum geht das o.g. Spiel so OO wie möglich zu erstellen, wollte ich nun meine Lösung präsentieren

Das ganze besteht aus einem abgeleitenden Panel welches folgende Einstellungen erlaubt: Reihen, Spalten, Rechtecke oder Kreise und GridLines.

Also der Code ist gesamt denke ich wirklich so OO wie es nur geht. Außerdem kann man unbrenzt Spieler hinzufügen!
Ahja das ganze hab ich mit GDI+ gemacht.

Bekannte Bugs:
- Spielsteine verschwinden nach minimieren, maximieren (also wenn neu gezeichnet werden muss. Irgendwas hab ich da falsch gemacht ...)
- Zurzeit wird noch nicht berrechnet ob man gewonnen hat (Hab bis jetzt noch keine Lösung dafür gefunden ...)

PS: Das Programm mit dem Source poste ich gleich (schreib grad von meinem Handy)

mfg wizer

Thema: Vier gewinnt
Am im Forum: Rund um die Programmierung

Ja ok werd ich machen. War mir eigentlich nicht so wichtig, wollte primär nur Stöckchen helfen. Aber ist keine schlechte Idee. Mach ich aber erst dann wenn ich die Gewinn-Abfrage dabei hab!

mfg wizer

Thema: Vier gewinnt
Am im Forum: Rund um die Programmierung

Hallo falls du noch immer nach einer Lösung suchst, solltest du mal mein Beispielprogramm anschauen. Dabei kann man im Panel zwischen runden und eckigen Steinen wählen. Du kannst die Reihen, Spalten und Größen angeben. Leider hab ich noch keine Funktion eingebaut die überprüft ob ein Spieler gewonnen hat, also Steine mit Schleifen vergleichen ...

Ich denke aber sonst ist das ganze recht nett ^^ Anzumerken ist, dass ich das grad schnell runter geschrieben hab also erwarte nichts besonderes!

mfg wizer

Thema: Modern MessageBoxes/ProgressBoxes
Am im Forum: .NET-Komponenten und C#-Snippets

Und noch ein TestProgramm!

Viel Spaß!

Thema: Modern MessageBoxes/ProgressBoxes
Am im Forum: .NET-Komponenten und C#-Snippets

Hi hab mich heute dran gesetzt und wie schon erwähnt zwei Fortschrittsformen programmiert. Also es gibt eine ProgressForm und ProgressBox. Die Funktionsweise ist ganz einfach jedoch unterscheiden sich beide Forms im Vergleich zur MessageBox08 und InputBox08 insofern das man diese nicht statisch aufrufbar sind! Also hier ein Beispielcode:

private void button3_Click(object sender, EventArgs e)
        {
            ProgressBox08 ProgressBox = new MessageBox2008.ProgressBox08(new string[2] { "Speicherstände werden gesichert ...", "Speicherständer werden gelöscht ..."}, "Datensicherung");
            ProgressBox.Show();
            Application.DoEvents();
            //Code like delete big file!
            System.Threading.Thread.Sleep(1000);
            ProgressBox.GetNextPoint();
            System.Threading.Thread.Sleep(1000);
            ProgressBox.GetNextPoint();
            //ChangeBackColor
            System.Threading.Thread.Sleep(1000);
            ProgressBox.RenameBox(1, "Fehler beim löschen", Color.Red);
            ProgressBox.Finish();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            ProgressBar08 ProgressBar = new MessageBox2008.ProgressBar08(new string[4] { "Speicherstände werden gesichert ...", "Speicherständer werden gelöscht ...", "AB", "CD" }, "Datensicherung");
            ProgressBar.Show();
            Application.DoEvents();
            //Code like delete big file!
            ProgressBar.GetNextPoint();
            System.Threading.Thread.Sleep(1000);
            ProgressBar.GetNextPoint();
            System.Threading.Thread.Sleep(1000);
            ProgressBar.GetNextPoint();
            System.Threading.Thread.Sleep(1000);
            ProgressBar.GetNextPoint();
            System.Threading.Thread.Sleep(1000);
            ProgressBar.Finish();
        }

mfg wizer

EDIT 2 Bilder:

Thema: Modern MessageBoxes/ProgressBoxes
Am im Forum: .NET-Komponenten und C#-Snippets

Also viel Spaß beim testen! Ahja die ProgressForm ist noch nicht ganz fertig!