Schlagwort-Archive: C#

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);

Gratis Source-Code Analyse Tool für Visual Studio

Vor ein paar Wochen hat Microsoft das Project „Microsoft Source Analysis for C#“ veröffentlicht. Die Grundlage für die statische Code-Analyse ist dieses Mal der (C#)-Quellcode.

image

Wie man der eigens dafür eingerichteten Blog-Seite entnehmen kann, wurde das Tool zuvor intern eingesetzt, um den Code auf bestimmte Qualitätsmerkmale zu überprüfen.

Für meinen Geschmack sind ein paar Einstellungen wirklich unnötig bzw. nicht wirklich praxistauglich (zumindest für mich). Zum Glück kann man die zu prüfenden Kriterien über ein kleines Tool im Installationsverzeichnis konfigurieren:

image

Mit einem Doppelklick auf die Settings-Datei wird der Editor geöffnet. Dieser verfügt über 5 Tabs zur Konfiguration: Rules, Settings Files, Results Caching, Company Information und Hungarian. Diese sind nachfolgend der Übersicht halber

alle aufgeführt:

image

image

image

image

image

Im Visual Studio 2008 wird dann eine neue View „Source Analysis“ hinzugefügt, in der die jeweiligen Regelverletzungen aufgeführt werden:

image

Download: http://code.msdn.microsoft.com/sourceanalysis/Release/ProjectReleases.aspx?ReleaseId=1047

Blog-Seite:
http://blogs.msdn.com/sourceanalysis/

Dokumentation der einzelnen Rules:
http://blogs.msdn.com/sourceanalysis/pages/source-analysis-4-2-rules.aspx