Laden...
S
Schildkroete myCSharp.de - Member
Softwareentwickler Dabei seit 10.10.2012 80 Beiträge
Benutzerbeschreibung

Forenbeiträge von Schildkroete Ingesamt 80 Beiträge

15.07.2013 - 13:50 Uhr

Wäre es nicht einfacher GUIDs zu verwenden, dort hast die Gewissheit, dass die GUID zu 99.999999999999% nicht wieder erzeugt wird.

Einen ArrayList, hier würde ich lieber eine List vom Type String verwenden, zu serialisieren und dann wieder deserialisieren, wäre nicht so toll, zudem du einfache Textdateien verwenden kannst bzw. eine CSV oder eine INI Datei. CSV wäre praktischer, denn die kannst du formatiert im OpenOffice oder Excel anschauen. Auch eine Unterteilung (Spalten + Zeilen) ist auch darüber hinaus viel angenehmer.

Wenn du also die Klasse GUID verwendest, so kannst du dir auch sicher sein, dass kein anderer den gleichen String hat und brauchst auch keinen XLocker in deinem Programm einzubauen.

15.07.2013 - 11:04 Uhr

Hallo zusammen,

ich habe im Forum und in anderen Threads gesucht, jedoch keine Lösung gefunden.
Problem ist, dass ich bei manchen Computern einen Null Wer erhalte, wenn ich beim Drag&Drop ein Element verschieben möchte. Der selektierte Knoten wird nicht errechnet bzw. gefunden.

protected override void OnDragOver(DragEventArgs drgevent)
		{
            Point DragPoint = this.PointToClient(new Point(drgevent.X, drgevent.Y));
            m_DropNode = this.GetNodeAt(DragPoint);
		  

			if (m_DropNode == null)
			{
				// no dropnode found
				drgevent.Effect = DragDropEffects.None;
				return;
			}
            Console.WriteLine(m_DropNode.Name);
			this.SelectedNode = m_DropNode;
			base.OnDragOver(drgevent);
		}

Die Event Methode ist mit Absicht überschrieben, da es sich um einen Controller handelt, der vom TreeView abgeleitet wurde.

Die Funktion PointToClient (Berechnung des Punktes ausgehend vom Screen zum TreeView) wird überall empfohlen und explizit drauf gewiesen. Auf der Entwicklungsmaschine funktioniert es auch ohne Probleme, jedoch bei 1 von 10 Fällen nicht z.B. wenn das Programm auf einem Notebook ausgeführt wird, wo ein Bildschirm dran hängt. Die Funktion GetNodeAt liefert einen Null-Wert.

Ich habe weder Ideen nur Vermutungen, dass die Funktion PointToClient X-Y Koordinaten liefert, die am anderen Ende des Bildschirms liegen.....

15.07.2013 - 10:12 Uhr

Ja, werde wohl oder übel doch den Anwalt erst zu Rate ziehen und evtl. einschalten.... Wollte mir alles ersparen....

15.07.2013 - 08:24 Uhr

Hallo zusammen,

einige, die hier im Forum auch unterwegs sind, arbeiten als Selbständige oder Teilsälbstständige. Und einige haben bestimmt Erfahrung gemacht, wenn Kunde die Zahlung hinaus zögert und einen versucht mit Versprechungen abzuspeisen.

Nun schuldet mir der Kunde einen guten Betrag, nach dem ich seine Daten gerettet und auf einem anderen Server wieder einrichten konnte (von den Webseiten bis hin zu Emails und Email Konten). Ein Teil habe ich damals aus Not und Zeit schnell auf meinem Server eingerichtet. Später kamen weitere Dienstleistungen dazu (Artikel Import + Web Programmierung).
Als erste Rechnung ausgestellt wurde, habe ich den Ablauf der Frist abgewartet. Danach schickte ich eine Erinnerung, worauf hieß, dass das Finanzamt die Konten derzeit gesperrt hat und der Gerichtsvollzieher vor der Tür stehen würde, wenn ein bestimmter Gerichtsfall nicht entschieden wäre. Die Firma verlor und hat sich bereit erklärt der Gegenseite den Schaden zu zahlen. Die Konten sind somit frei.
Als Administrator deren Systems habe ich Einblick in deren Daten (kommt da durch, dass ich in deren WaWi auch Einstellungen und Konfigurationen treffen muss). Ich sehe was die einnehmen und was schon von deren Kunden bezahlt wurde. Wenig ist es nicht und für drei mal warme Suppe vollkommen ausreichend.

Aus Mitleid habe ich zugestimmt, dass zuerst die Hälfte beglichen werden soll und anschließend in paar Wochen der Rest. Doch auf die Hälfte warte ich schon seit über einer Woche.

Nun stellt sich mir die Frage, sollte ich alles abstellen und den Server auf den Ur-Zustand setzen und die Daten bis zudem Zeitpunkt sichern und sicher aufbewahren, bis die Rechnung beglichen ist. Schließlich ist ja der Gedanke: Kein Geld - Keine Dienstleistung - Keine Webshops und Emails ab Zeitpunkt des Crashes. Denn im Gesetzt heißt es, dass die Ware solange Eigentum des Lieferanten ist, bis die Ware bezahlt wurde.

Ist es Rechtens, wenn ich alles abstelle und auf den Ur-Zustand zurück setze?

12.07.2013 - 11:00 Uhr

Hallo zusammen,

ich habe ein kleines Problem und zwar versuche ich eine ASP.NET MVC Seite zu erstellen, die auch Mobile Freundlich sein sollte. Jedoch bin ich in Sachen Design & Co nicht so richtig fit drauf, aber auch was die ganze Meta Geschichte im Header des Web Dokuments angeht. Soweit so gut, die Elemente werden richtig angezeigt, doch wenn man auf ein Input Objekt vom Typ Text drauf drückt, um eine Eingabe zu tätigen, zoomt der Browser automatisch und zerschießt die Ansicht komplett. Ich habe Seiten gesehen, wo es nicht passiert und bin auf folgendes gestoßen:

[HTML]<meta name="viewport" content="width=device-width, initial-scale=1.0">[/HTML]

Jedoch scheint es nicht zu funktionieren. Mein Android Handy zoomt trotzdem, bei der anderen Seite, wo ich den Meta Tag her habe, ist es aber nicht der Fall. Die Ansicht bleibt gleich, wenn ich z.B. im Suchfeld was eintippen möchte.

02.07.2013 - 10:43 Uhr

Faul ist nicht der, der nicht lernen möchte, faul ist der, der die Jugend mit Theorie totschlägt!
Sorry aber das ist Quatsch.

Nur weil du Lehrer hattest die dir das nicht vermitteln konnten heißt das nicht, das sie es anderen nicht vermitteln konnten, jeder lernt anders.

Quatsch ist, wenn du deinen Matheprofessor fragst, wo man die Aussage bzw. die Theorie, die innerhalb von zwei Doppelstunden auf die Tafel gezeichnet wurde, im Leben anwenden konnte. Er aber dich anschaut wie ein Meerschweinchen und dann einfach weiter auf die Tafel etwas schreibt. Wenn du bei solchen Aktionen Vermittlung und Wissen erhalten hast, welches du in deinem Leben einsetzt und nutzen kannst, dann Respekt. Dann gehörst du zu den 1 von 10.000, die ihre Mathevorlesungen nicht mit Black Outs verlassen haben.

Fragst du heute z.B. einen Wirtschaftsinformatiker wo er heute Matrizen anwendet, so wird er mit den Schultern zucken und weiter laufen. Fragst du einen Elektrotechniker, so sagt er dir gleich, dass man damit Strom und Spannung in einem System mit mehreren Wiederständen und Stromrichtungen ausrechnen kann, wo dazwischen noch mehrere Transistoren und Dioden geschaltet werden..... (so habe ich es in der Erinnerung)...

Dass die Lehrer es nicht vermitteln konnten oder nicht vermitteln wollten? 🤔

Persönlich kenne ich einige Leute, die als faul und dumm abgestempelt wurden, man muss eigentlich nicht in meiner Umgebung suchen, sondern es gibt viele da draußen. Vom Mode Zar bis hin zum Manager und Erfinder, die ihre Pädagogen und die Gesellschaft fragen würden:

If you are so smart, so show me your money?

Faulheit generiert aus Stagnation und Lustlosigkeit der Gesellschaft Kompetenz und Begabung zu fördern.

03.06.2013 - 14:39 Uhr

Vielleicht sollten wir noch ein Thread eröffnen:
Die 68er Generation heute korrupt und Entwickelt Software für Atomare-Sprengköpfe?

Oder:

Wenn haben wir das HART-IV TV zu verdanken?

Faul ist nicht der, der nicht lernen möchte, faul ist der, der die Jugend mit Theorie totschlägt!

Wenn man einen Mathematik Professor fragen würde, wo man die Formel im Leben anwenden kann, so bricht sein System ab, da es Return Value == Null raus haut.

Im Berufskolleg hatten wir Informatiker, Techniker und Ingenieure als Lehrer, wo zwar mir nicht verraten wurde, wie dick ein Material sein müsste, z.B. ein Metallrohr, damit es dem Druck der Zündung einer Kartoffelkanone halten soll, ohne dass es zerspringt in tausend tödliche Teile, aber mir wurde zumindest der richtige Weg gedeutet.
Zwar hatte ich den Weg und die Dicke des Materials ermittelt, jedoch habe ich aus "Ungewissheit" das Experiment nicht vollendet. Die Kartoffelkanone hätte demnach die Kraft eines primitiven Vorderladers gehabt - Theorie = tödlich!

03.06.2013 - 14:20 Uhr

Ehrlich, ich kenne Leute, für die wird ein Stundensatz von 100Euro/Std verlangt, weil sie einfach in einem bestimmten Fachbereich programmieren können in einer bestimmten Sprache. Diese Leute haben weder ein Studium oder ein abgebrochenes Studium, sind einfach Quereinsteiger oder Do-It-Yourself Typen, also alles möglich....

Die Frage ist am Ende, was kannst du und wie viele Projekte hast du schon realisiert?

Meine Aussage trifft die Nachfrage, die im normalen Wirtschaftsbereich liegt. Es ist selbstverständlich, dass eine Firma, deren Software komplexe mathematische Gleichungen löst, sei es ein GPS Programm für die Einparkhilfe oder CAD Software für ein 128 Bit System, nur Absolventen mit Hochschulabschluss nimmt und dazu noch aus ansprechenden Fachbereichen wie Physik und Mathematik. Die bilden aber nur die Spitze des Eisbergs.
Die normalen Dienstleistungen sind mit einem Standard-Programmierer zufrieden, der evtl mehr von Administration und Installation versteht, als von komplexen Algorithmen um die Statik einer Hauswand aus Holz zu berechnen.

24.05.2013 - 10:07 Uhr

Ich denke, die Antwort heißt VSTO. Hab den Artikel nicht gerade zur Hand, aber in der Mai Ausgabe von dotNETPro gab es einen wunderbaren Artikel, wie mache ich eine Excel Datei auf ohne Excel COM Server (Interop).
Alles geschieht im Datacache eines DataSets (so habe ich es noch im Kopf).

VSTO kennen viele als eine gute Möglichkeit um Add Ins zu erstellen für MS Office. Im Artikel wurde jedoch ein normales C#.NET Projekt erstellt, z.B. WinForms, wo ein Verweis auf eines der DLLs gemacht wurde - Microsoft.VisualStudio.Tools.Applications.ServerDocument .

Mehr habe ich auch nicht im Kopf. Schaut einfach in die Zeitschrift rein. War in der Rubrik Schwerpunkt.

02.05.2013 - 11:02 Uhr

@Alle
Danke für die Aussagen. Der Grund für diesen Thread ist wie immer, zwei Programmierer (einer älter der andere jung) zanken sich um Code und Performance.

Der Code ist nur ein Beispiel und wurde nicht von mir, sondern von meinem Kollegen erstellt. Er mag nicht, wenn ich Linq verwende, obwohl viele Entwickler dafür sprechen.

02.05.2013 - 10:55 Uhr

using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LinqLoopTest
{
	class Program
	{
		static void Main(string[] args)
		{
			Console.WriteLine("Measure first pathlist");

			List<String> PathList1 = CreatePathList1();
			MeasureLinq(PathList1);
			MeasureLoopWithCount(PathList1);
			MeasureLoopWithBreak(PathList1);

			Console.WriteLine("");
			Console.WriteLine("Measure second pathlist");

			List<String> PathList2 = CreatePathList2();
			MeasureLinq(PathList2);
			MeasureLoopWithCount(PathList2);
			MeasureLoopWithBreak(PathList2);

			Console.ReadKey();
		}

		private static bool MeasureLinq(List<String> PathList)
		{
			Stopwatch sw = new Stopwatch();

			sw.Start();
			//bool LongPathFound = (PathList.Where(p => p.Length > 0).Count() > 0);	
            bool LongPathFound = PathList.Any(Path => Path.Length > 0);
			sw.Stop();

			Console.WriteLine("Time for MeasureLinq:\t\t" + sw.ElapsedTicks);

			return LongPathFound;
		}

		private static bool MeasureLoopWithCount(List<String> PathList)
		{
			Stopwatch sw = new Stopwatch();

			sw.Start();
			List<String> TempList = new List<string>();
			foreach (String Path in PathList)
			{
				if (Path.Length > 0)
					TempList.Add(Path);
			}
			bool LongPathFound = (TempList.Count > 0);
			sw.Stop();

			Console.WriteLine("Time for MeasureLoopWithCount:\t" + sw.ElapsedTicks);

			return LongPathFound;
		}

		private static bool MeasureLoopWithBreak(List<String> PathList)
		{
			Stopwatch sw = new Stopwatch();

			sw.Start();
			bool LongPathFound = false;
			foreach (String Path in PathList)
			{
				if (Path.Length > 0)
				{
					LongPathFound = true;
					break;
				}
			}
			sw.Stop();

			Console.WriteLine("Time for MeasureLoopWithBreak:\t" + sw.ElapsedTicks);

			return LongPathFound;
		}

		private static List<String> CreatePathList1()
		{
			List<String> PathList = new List<string>();
			for (int i = 1; i <= 99900; i++)
				PathList.Add(String.Empty);

			for (int i = 1; i <= 100; i++)
				PathList.Add(" ");

			return PathList;
		}

		private static List<String> CreatePathList2()
		{
			List<String> PathList = new List<string>();
			for (int i = 1; i <= 100000; i++)
			{
				if (i % 1000 == 0)
					PathList.Add(" ");
				else
					PathList.Add(String.Empty);
			}
			return PathList;
		}
	}
}

02.05.2013 - 10:49 Uhr

Hallo zusammen,

bei mir hat sich eine Frage aufgetan: Ist Linq wirklich langsamer als eine normale Schleife?

Wenn man eine Collectionlist mit n Elementen erzeugt, die Elemente können von Typ String sein, mit unterschiedlicher Länge und man will heraus finden, ob die Elemente in der Liste die Länge x überschreiten, so arbeitet die normale Schleife in zwei Fällen schneller als Linq.

Fall 1: Man interiert über die gesamte Liste und sortiert die Elemente heraus, die die Länge x überschreiten, danach schaut man, ob die neue Liste eine Array Größe größer 0 hat und gibt entweder True oder False raus.

Fall 2: Man interiert über die Liste und sobald ein Element gefunden wurde, das die Größe x überschreitet, so wird die Schleife abgebrochen und und es wird ein True zurück gegeben.

Wenn man im Fall 1 und Fall 2 Linq einsetzt, entweder mit filtere die Liste und gibt mir den Count oder mit dem Aufruf der Funktion Any( o => o.Length > x), so ist der Faktor meistens um 2 oder sogar um 10 größer.

Oder gibt es Ansätze, dass man Linq bei simplen Filteraufgaben nicht unbedingt einsetzen sollte, sondern bei komplexeren Aufgaben?

28.02.2013 - 17:19 Uhr

Also folgendes ist jetzt passiert, evtl. ist es auch für jemanden hilfreich.

Die unterschiedlichen Versionen werden als Process gestartet (die exe davon) und abgewartet, bis der Process vollständig zur Verfügung steht.
Erst danach wird eine Verbindung zum ComServer über die verfügbaren Interfaces aufgebaut ( z.B. WORD.Application). Da die GUIDs gleich sind, bringt es nichts sich an denen zu orientieren. Man muss nur das vollständige Laden der Applikation abwarten, denn in vielen Fällen fungiert der ComServer nur als Operator und verbindet die Dritt-Applikation mir der aktuellen Applikation, die gerade ausgeführt wird.

P.S.: Falls Probleme entstehen sollte Properties oder Methodes auszulesen, weil z.B. ihr ein Speicherproblem bekommt oder eine COM Exception, so sollte man sich von der Typsicherheit verabschieden und über InvokeMember gehen, welches ihr in der Klasse Type (oder Class.GetType() ) zur Verfügung steht.

19.02.2013 - 12:11 Uhr

Mit dem Office ist es eindeutig. Office.12 oder Office.14 .
Leider ist der Applikation, von der ich drei Versionen auf dem PC habe, etwas anderes. Die Entwickler haben klugerweise die COM Server Aufrufe überschrieben, so dass die GUIDs von den Progs auf die aktuelle Version verweisen.
Sprich, wenn man die alte DLL des COM Servers verwenden würde, würde trotzdem die aktuelle Version geladen.

19.02.2013 - 01:04 Uhr

Hallo miteinander,

ich weiß nicht, ob jemand sich damit auskennt, evtl. kennen es einige aus der Office Programmierung, dass man eine Applikation, die auf dem PC installiert ist (hier muss ich anmerken, dass es sich um ein Windows OS handelt) per COM Server Aufruf starten und kontrollieren kann. Wie gesagt, Office wäre so ein Beispiel (WORD oder EXCEL).

Nun liegt das Problem vor, dass durch den COM Server Aufruf eine ältere Version und dann die neuere Version aufgerufen wird und zwar nach einander.

Mit Word oder Excel habe ich es noch nicht getestet, da ich aus bestimmten Gründen keine zwei Office Versionen installieren kann.

Mich würde es interessieren, ob jemand schon auf so ein Problem gestoßen ist und wie kann man es lösen, dass z.B. die Version 1.0 aufgerufen werden soll oder nur die Version 2.0?

Danke im Voraus.

21.12.2012 - 13:24 Uhr

Hallo zusammen,

ich bin auf der Suche nach einem Tool, welches mir ermöglicht eine Protokollierung des Codes während der Ausführung durch zuführen und die Geschehnisse als Datei auszugeben bzw. Text Datei.
Ich habe etwas gefunden zum Thema Whitebox Test. Es gibt von Microsoft ein Visual Studio Tool, es nennt sich Pex. Ein Beitrag auf Englisch habe ich bei Code Project entdeckt. Jedoch scheint es mir, dass es nur im VS 2010 selbst einsetzbar ist. Sprich, wenn ich bei einem Kunden ein Test auf seinem PC starte, so muss ich entweder VS 2010 selbst bei ihm installieren und wieder deinstallieren, oder ich habe dann nur den Blackbox Test (hier könnte ich in mühsamer Arbeit jedes Property protokollieren und dann in eine Text Datei schreiben).

Hat jemand eine Ahnung, wo ich suchen muss bzw. mir ein Schlagwort geben oder am besten gleich was empfehlen?

Danke im Voraus.

23.11.2012 - 14:21 Uhr

Vielen Dank für die ganze Info.

Ob die Anzeige mit 1 oder 2 Mio. Einträgen jemanden was nutzt ist zweitrangig. Obwohl es schon Anwendungen/Situationen gibt, zwar nicht viele, wo so eine Ansicht erfordert wird.
Für mich war primär zu verstehen, warum so viele Objekte so schnell geladen werden können, als z.B. beim WPF...

Wegen dem Tipp, da muss ich noch mehr anschauen und ausprobieren.

Im Endeffekt haben z.B. Firmen pro Liste/DataGrid zwischen 500 und 10.000 Einträgen, die auf einmal dargestellt werden und abgearbeitet. Wie oben schon gesagt wurde, bei ca. 10.000 Einträgen/Datenobjekten habe ich im Endeffekt 100.000.000 Prozesse oder sogar noch mehr.

23.11.2012 - 11:11 Uhr

Virtualisierung war einer der Punkte, die ich ausprobiert habe... war leider enttäuschend..

Vielleicht kannst du mir etwas Code zeigen, wie man es einbaut bitte.

23.11.2012 - 10:54 Uhr

Danke für die ausführliche Antwort und den Beispiel,

ich glaube, es ist das erste Mal, dass Mathematik erfolgreich im realen Leben gezeigt wird, statt theoretisch auf einer Tafel ohne jeden Bezug zu einer Sache 😉 ...

Zur WPF: Es war ein einfaches Model mit ca. 5 Properties, die von Typ String sind.
Dazu habe ich ganz normal DataTemplates erstellt bzw. DataGridColumns mit Bindings, also nichts komplexes. Auch den Style habe ich nicht mal angefasst.

Aber mit dem WPF & Performance Problem bin ich nicht der einzige. Hab schon deswegen viel recherchiert, aber keine vernünftige Lösung bzw. Antwort erhalten.

23.11.2012 - 09:54 Uhr

Hallo zusammen,

früher habe ich mir nicht so oft Gedanken gemacht, was Performance angeht. Ich vermute, dass mein Beitrag evtl. nicht hier her gehört. Aber seit neuesten, ich versuche ein gutes bzw. spezielles abgeleitetes DataGridView zu erstellen, für bestimmte Zwecke, ist mir was aufgefallen.

Das DataGridView von den WinForms ist sehr sehr schnell - performant, was mich z.B. beim Darstellen von 1 Mio. Datenobjekten recht beeindruckt hat. Ob diese Anzahl von Objekten vorerst aus der Datenbank über eine Internetleitung geladen werden müssen, ist eine andere Sache.

Nun musste ich die Möglichkeit schaffen die Sachen zu sortieren. Ich habe mich für LINQ bzw. Lamba Ausdrücke entschieden. Davor gab es immer wieder Wiedersprüche, dass LINQ Ausdrücke nur Schleifen in Schleifen sind und keine besondere Erkenntnis liefern, was die Schnelligkeit angeht. Und siehe da, da wurde ich wieder überrascht!
Das Sortieren von 1 Mio. Datenobjekten mit Just-In-Time, sprich bei drücken einer Taste auf dem Keyboard im Filterfeld, war super schnell. Meistens hat es knapp eine Sekunde gedauert oder sogar noch schneller.

Von Performance verstehe ich nicht wirklich viel, nur "So wenige Funktionen bzw. Prozesse aufrufen um ans Ziel zu kommen!", aber könnte mir jemand es erklären bitte. Was steckt wirklich hinter LINQ & WinForms, dass diese Sachen so schnell sind. Ich habe versucht unter WPF DataGrid knapp 10.000 Datenobjekte darzustellen und es hat ewig gedauert, bis die Tabelle dargestellt wurde, zudem hat das Scrollen immer wieder gestockt.

Danke im Voraus für die Erklärung! 😁

13.11.2012 - 13:19 Uhr

Servus,

eigentlich kann man es mit verschiedenen Sachen lösen. Was du evtl. brauchst, ist ein Behaviors. Hier ist ein LINK

Zumindest stand ich vor einer Aufgabe, wo es hieß UserControls in ein anderes UserControls per Drag&Drop einzubinden.
Es zu erklären, wie es funktioniert wäre komplex, du muss dir am besten einige Beispiele anschauen und selber ausprobieren...

13.11.2012 - 13:14 Uhr

Gehe ich davon aus, dass du ein DataGrid als Filterplatform nutzt und im anderen die Ergebnisse anzeigst?

Wenn ja, dann hilft dir das weiter LINK

12.10.2012 - 15:13 Uhr

Eigentlich beinhaltet dein Entity Objekt eine Liste von Entity Objekten mit denen es eine 1:n Beziehung hat. Wenn du dein EntityFramework richtig eingestellt hast, so sollten alle Beziehungen als EntityCollection<EntityObject> innerhalb des EntityObject geladen sein
Du musst es in der ComboBox auch alles richtig binden. Wenn du den DataContext des Parent Objektes bindest, so verteilen sich die Objekte bzw. die Properties des Objektes auf ihnen zugewiesene WPF-Elemente.

Im Bild, als Anhang, kannst erkennen, dass die Tabelle tblCyBContact eine EntityCollection vom Typ tblCyBAddress besitzt. Wenn etwas in der Tabelle von tblCyBAddress steht, so wird es auch in der EntityCollection der Klasse tblCyBContact stehen.

12.10.2012 - 14:56 Uhr

Kann man das auch anderst lösen nicht per xaml binding ?

Wieso? Mit Binding wäre es doch praktischer oder muss unbedingt ein Doppelklick ausgeführt werden, um die Daten in eine TextBox zu laden?

Wenn dann, einfach ein DoubleClickEvent anhängen und im Event selber von der DataGrid das SelectedItem in die gewünschte Klasse casten.

Falls so nicht geht, der DataGrid hat auch die Möglichkeit SelectedCells raus zugeben, wo du auch den Owner Column ermitteln kannst, um zu sehen, ob du richtig liegst.

12.10.2012 - 12:09 Uhr
<TextBox Text="{Binding ElementName=yourDataGridByName, Path=SelectedItem}" />
10.10.2012 - 15:28 Uhr

Versuch mal einfach

System.Windows.Forms.MessageBox.Show(message);