Archiv der Kategorie: Vorlesung

Drag&Drop: FileDrop aus eigener Applikation heraus

Möchte man per Drag&Drop Dateien aus dem Windows Explorer in die eigene Applikation hereinziehen, so ist das kein Problem:

  • Platzieren eines Controls, auf dem die Datei(en) per Drag&Drop gezogen werden sollen
  • Eigenschaft “AllowDrop” des Controls auf “True” setzen:

image

  • Registrieren auf die Events DragEnter und DragDrop:

image

  • Im EventHandler für DragEnter prüfen, ob es sich im Dateien und den Mauszeiger anpassen handelt:

if (e.Data.GetDataPresent("FileDrop"))
{
    e.Effect = DragDropEffects.Copy;
}

  • Im EventHandler für DragDrop die Datei auslesen (und in einer TextBox darstellen)

string[] files = e.Data.GetData("FileDrop") as string[];
if (files == null) return;

_txtContent.Text = File.ReadAllText(files[0]);

Das Resultat kann dann so aussehen:

image

Anders herum ist es jedoch etwas schwieriger: Wie kann ich Daten beispielsweise aus einer TextBox per Drag&Drop in eine Datei in den Windows Explorer droppen?

Dazu muss man sich eines kleinen Tricks behelfen: Man muss ein FileDrop initiieren und die zu droppenden Daten in eine temporäre Datei kopieren. Der Dateiname der temporären Datei ist dann auch der Dateiname des Drop Targets. Hier ist eine kleine Schritt-für-Schritt Anleitung:

  • Registrieren auf das MouseDown Event als Initiator für die Drag&Drop Aktion:

image

  • Anlegen einer temporären Datei mit dem Inhalten, die in die zu droppende Datei geschrieben werden sollen. Wichtig: Der Dateiname ist auch der Dateiname der dort erstellt wird, wo die Datei im Explorer gedropped wird:

// Create temporary file name
string tempFile = Path.Combine(Path.GetTempPath(), "LoremIpsum.txt");

  • Inhalt in die temporäre Datei schreiben

// Write content to drop into the temporary file
File.WriteAllText(tempFile, _txtContent.Text);

  • Temporäre Date in ein string-Array verpacken (wird benötigt, da FileDrop ein string array erwartet):

// Create string-array for FileDrop operations
string[] files = new[] { tempFile };

  • DataObject erstellen und mit dem Format der Daten (“FileDrop”) und den Daten instanziieren:

// Create DataObject for "FileDrop" and add string[] with temporary file
DataObject dataObject = new DataObject("FileDrop", files);

  • DragDrop initiieren und dataObject übergeben:

// Initiate DragDrop operation
DoDragDrop(dataObject, DragDropEffects.All);

Vorlesung .NET: Ergebnisse der Umfrage der Themen im nächsten Semester

Am Ende des letzten Semesters habe ich nach der Bekanntgabe der Noten wieder eine Umfrage zu den Themen der Vorlesung im nächsten Semester gemacht. Mir ist es wichtig, dass ich nicht irgendetwas unterrichte, von dem ich meine, es wäre interessant, sondern dass ich die Themen anspreche und vermittle, die wirklich von Interesse sind.

Das Ergebnis der Umfrage sieht so aus:

20120909-213346.jpg

Platz 1 teilen sich sowohl das Testen von .NET Anwendungen als auch die Verteilung von .NET-Anwendungen, sowie Parallele Datenverarbeitung mit der TPL/Multithreading. In der Firma bin ich in einer Taskforce zu dem Thema Parallelisierung unterwegs und kann bestimmt den einen oder anderen Tipp aus der Praxis vermitteln.

Die folgenden Plätze gehen an GUI Programmierung mit WPF. Hier werde ich neben den Grundlagen in Controls, 2D-, 3D-Programmierung und Animation auch auf MVVM (Model-View-ViewModel eingehen).

Leider hat das Semester nur 10 Vorlesungseinheiten á 3×45 Minuten, sodass andere Themen wie ASP.NET MVC leider auf der Strecke bleiben. Ich wäre aufgrund der aktuellen Entwicklungen wie Windows 8 von einem anderen Ergebnis ausgegangen.

Ich freue mich schon auf das neue Semester, das am 1.10.2012 wieder an der Dualen Hochschule Baden-Württemberg beginnt 🙂