Meine Vorschläge schon mal probiert?
Wenn's im Hyperterminal funktioniert, so liegts eindeutig an Deinem Programm.
Standardfehler sind:
Probiers auch mal hiermit:
Grüße
Habs jetzt gelöst in dem ich die Grenzen vom Canvas direkt abfrage.
Für die Nachwelt, hier der Code.
private void mouseMove(object sender, MouseEventArgs e)
{
if (sender is Image && (e.LeftButton == MouseButtonState.Pressed) && this.isMouseCaptured)
{
Image item = sender as Image;
//Get Delta Pos
double yDelta = e.GetPosition(this.canvas1).Y - this.xMousePos;
double xDelta = e.GetPosition(this.canvas1).X - this.yMousePos;
//Get Next Pos
double yNext = yDelta + Canvas.GetTop(item);
double xNext = xDelta + Canvas.GetLeft(item);
//Check Border
if (xNext >= 0 && xNext <= this.canvas1.Width && yNext >= 0 && yNext <= this.canvas1.Height)
{
//Set New Pos
item.SetValue(Canvas.TopProperty, yNext);
item.SetValue(Canvas.LeftProperty, xNext);
//Update position global variables.
this.xMousePos = e.GetPosition(this.canvas1).Y;
this.yMousePos = e.GetPosition(this.canvas1).X;
}
}
}
@Schlopp
Bewegen funktioniert tadellos, ich nutze bereits CaptureMouse() & ReleaseMouseCapture().
Mir ist nur noch unklar wie ich das bewegte Objekt ausschließlich auf dem Canvas behalte.
Jo Baby, Jo Baby, Jo Baby,
...danke CLS, funktioniert einwandfrei!
Noch eine Frage, zum Thema.
Ich hatte sowas schon mal in WinForms implementiert, da was war es so das ich die Objekte dann nur innerhalb des UserControls in dem sie erstellt wurden bewegen konnte.
Hier ist es jetzt so, das ich meine Bilder überall hinbewegen kann, also über den Canvas hinweg, über die gesamate Dokumentengliederung hinweg.
Wie stelle ich das ab?
Hallo,
folgendes Problem:
Ich habe ein Canvas, welchem ich über ein Button ein Bild hinzufügen kann.
Anschließend will ich das Bild mit der Maus auf dem Canvas bewegen.
Das zu gibt's im MSDN folgendes Beispiel:
MSDN: Objekte mit der Maus bewegen
Mein Problem ist, dass in der MousMove()-Methode an der Stelle wo ich die aktuelle Position des Bildes auslese immer NaN rauskommt:
(double)item.GetValue(Canvas.TopProperty);
Über Google habe ich rausgefunden, das ich da wohl nicht der Einzoge bin mit diesem Problem und man solle statt dessen das hier verwenden:
(double)item.RenderTransform.Value.OffsetY
Da kommt bei mir aber immer 0 raus, was auch falsch ist.
Kann mir jemand helfen?
Eine Artikelsammlung mit "Coding Dojos", also kleinen Übungsaufgaben für Entwickler, stellt das Fachblatt "dotnetpto" auf seiner Webseite kostenlos bereit. Bisher erschienen 5 Folgen.
Hallo all-finder,
das hört sich eher an als wenn das ein Problem Deiner Hardware ist.
Der Serialport bringt leider kein Timeout bei Close() mit.
Grüße
Danke, genau sowas hab ich gesucht.
Es ja wirklich unglaublich das Teil!
Hallo,
ich suche einen Effekt in WPF womit man eine Seite/ Bild umblättert.
Ähnlich wie auf dem iPad oder hier:
Gibt's Ansätze dafür?
Ok, es geht. Aber nicht native, es läuft dann auf ne Art Virtualisierung raus.
Scheint massig Produkte zu geben.
Z.B. http://www.serial-port-splitter.com/
Du kannst mit beliebig vielen Anwendungen auf einen COM-Port mittels SerialPort zugreifen. Für ein Open() aus einer Anwendung muss der COM-Port allerdings geschlossen sein. Split oder dergleichen gibt es nicht.
Hallo Fabian,
ich kann Dir was empfehlen.
Es gibt ein Bildungssystem, das in Zusammenarbeit mit den Schulen sowie Brockhaus und Duden-Verlag entwickelt wurde und schon den Comenius-Preis erhalten hat, geeignet für Kinder ab Grundschulalter bis Abitur/Studium.
Dazu bekommt man insgesamt 11 Lexika-Bücher, eine DVD sowie einen persönlichen Zugangscode zum Wissenscenter (übers Internet). Im Wissenscenter kann man sich alle Informationen altersentsprechend herunterladen oder zuschicken lassen.
Als Schülerservice antworten Lehrer direkt, was Lernhilfe ersparen soll!
Empfehlen kann ich es dir deshalb, weil ich dafür einen 2 wöchigen Testzugang hatte.
Die Lehrer in den Foren antworten wirklich schnell und kompetent. Und deren Motto ist Hilfe zur Selbsthilfe....
Preis war ~30€ / Monat auf 24 Monate oder so. Falls Interesse solltest Du Dir einen Vertreter nach Haus kommen lassen.
Grüße
Hallo ViperNeo,
Du könntest auch ein kleines Demo-Program schreiben, in dem du z.B. in einer Schleife
Images, Pens, Brushes, oder ähnliches erzeugst ohne Dispose() aufzurufen. Dabei hast Du den Taskmanager offen und kannst zeigen wie die verwendeten GDI-Objekte rapide ansteigen --> irgendwann gibt's keine Handles mehr.
Als weiteres praktischen Argument (von Microsoft) könntest du im VisualStudio die statische codeanalyse aktivieren, die sagt Dir genau, wann und warum Dispose() zu implementieren ist.
Grüße
Hallo herbivore,
er soll die Eigenschaften der Controls nach XML serialisieren, und dieses dann in der DB speichern. So hat er in der DB nur eine Tablle mit 2 Spalten (ID, Blob). Verlagert halt automatisch das Auslesen auch wieder in den Code.
Oder nach XML serialisieren und als BLOB in die DB jagen.
Ich trainiere 1x die Woche (1.5h) stilübergreifenden Kampfsport mit Schwerpunkt Fitness und Selbstverteidigung, also keinen Wettkampfsport.
Las ich das ne Woche aus, fühle ich mich eingerostet und mieslaunig.
Was mir dabei besonders gefällt ist die Konzentration auf den Körper und nicht wie bei der Arbeit (Programmieren) aufs Gehirn.
Hallo talla,
bin grad am Durcharbeiten Deines Artikels. Die Downloads sind, wie bereits erwähnt, alle ungültig.
Könntest Du die nochmal bereitstellen? So wie es für dich am einfachsten ist, vielleicht alle in einem Paket?
Danke & Grüße
Hier zwei nützliche Links:
Drawing Visio Shapes in the Visio ActiveX Control using C# and .NET
Hier ein passender Link dazu:
Vielleicht mach ich's ja auch falsch, aber ich machs mir ganz einfach.
Jede Schicht hat einen Verweis auf log4Net und jede schicht loggt.
Dabei werden Exceptions immer nur in der UI Schicht geloggt, und in der UI Schicht wird der Logger auch konfiguriert.
Wie soll ich das denn sonst machen?
Mach aus 3 Schichten --> 4 Schichten, schon haste das Problem nicht mehr.
BL (Buisiness Layer) & BO (Buisiness Objects)
BL hat dann einen Verweis auf DA, und BO kann jeder kennen, da BO sowieso nur stupid Objects enthält!
@lousek,
kannst du uns Dein Werk mal vorstellen, vielleicht unter Projekte posten?
Setz doch mal ein Dispose() hinter dem Close();
Hallo JAck30lena,
herzlichen Glückwunsch zu Deinen ersten 10.000 Post. Du bist wahrlich eine große Bereicherung für das Forum. Weiter so!!!
Hab zufällig bei 9.998 Post Deinen Counter gesehen, und dann angefangen Dir "nach zu spionieren". Die "Mühe" war es Wert, hier ein Live-Screenshot dieses historischen Momentes.
Grüße
Joe
Hallo TheGear,
schickes Teil gefällt mir, danke für die Sourcen.
Guck mal hier:
Schon mal hiermit probiert?
Hat sich als Bug in der Fremdkomponente rausgestellt, daher Thema erledigt.
Ich mach das immer so, dass ich noch zusätzlich zu den 3 Schichten ein weiteres Projekt habe (BO - Buisiness Objects). Mein Startprojekt (in Deinem Fall GUI) ließt dann die Settings ein und reicht das einfach an die nächste Schicht durch, und diese wieder an die Nächste. Alle Layer kennen BO.
Hier gibts reichlich Beispiele:
Hallo,
ich betreibe grad Schnittstellenentwicklung mit Fremdkomponenten.
Dabei muss ich als Client eine Verbindung zu einem Server aufbauen. Intern verwendet diese Verbindung laut Dokumentation .NET Remoting.
Der Server läuft in einer VM unter Windows XP, der Client im Host System unter Windows 7. Die Verbindung wird kurz aufgebaut, aber anschließend sofort wieder vom Server getrennt. Als Fehlermeldung kommt dann immer: "The table [GlobalHold] is not ready for transmission".
Starte ich Client und Server im selben Betriebssystem, also lokal, funktioniert alles.
Starte ich den Client und den Server jeweils in einer eigenen XP VM funktioniert auch alles.
Firewall ist deaktiviert.
Jemand eine Idee?
Danke & Grüße
Da ich grad wieder mit der seriellen SS arbeite, hat sich ein Update angeboten.
Neue Version oben hinzugefügt.
Spitze, Glückwunsch!
AutoCopy (Kopieren beim Markieren)
Linkification (Aus Text wird HyperLink)
BugMenot (Passwort Datenbank)
@telnet
Das kann ich in keinster Weise bestätigen. Ich habe soviel Zeug (Waagen, Scanner, Bluetooth-Module, Kartenleser, uvm) über die SerialPort-Klasse angesteuert und nie, aber wirklich nie, Probleme gehabt. Meist liegen die Probleme in Schicht 8 oder weil keiner die serielle SS oder das Gerät versteht.
Und in dem Artikel über die serielle SS in der DotNetPro geht es um die Konfiguration der seriellen SS.
Naklar ist das möglich, dazu musst du nur mehrere Ports aufmachen.
Timer sind Threads. Also musst Du ein Sperrmechanismus verwenden.
Davon gibt es mehrere. Schreibe zum Beispiel folgendes über Deine Methode:
[MethodImpl(MethodImplOptions.Synchronized)]
Ich sehe sofort einen Fehler, du hast keinen Handshake gesetzt.
Siehe auch: Template SerialPort
Die Timeouts des SerialPorts sind Properties, dafür musst du kein Event registrieren.
Einfach Timeout setzen und gut, natürlich bevor Du Open() aufrufst.
Einer Verbindung über COM Port sollte ohne weiteres möglich sein.
Spontan sehe ich das Du gar keinen HandShake gesetzt hast.
Probiers auch mal hier mit: Template SerialPort
Eine falsche UART-Einstellung halte ich wirklich für am wahrscheinlichsten.
Du hast auch keinen HandShake gesetzt, probier mal alle HandShake Varianten durch...
Ähnliches Problem wie hier:
Hallo oli001,
das Ganze sollte sich eigentlich ziemlich einfach, da standartisiert, gestallten.
Das Problem bei der seriellen SS ist, das man nie genau weis, wann, welche Daten über die Leitung kommen. Deshalb benötigst Du ein definiertes Ende. Ich habe schon mehrere digitale Waagen über die serielle SS angesprochen und überall konnte man die Endekennung einstellen. Mein Favoriet ist immer CRLF (\r\n).
Du lauscht also auf der seriellen SS und wartest bist die Kennung kommt. Wie CRLF in Byte aussieht findest du bei Google.
Eine Beispielimplementierung findest du hier:
Das sollte dir helfen: