Kann es sein, daß die erstellte Anwendung in der Zeit auf das "intelligente Gerät" (tolles Wort überspielt wird? (So kenne ich es zumindestens bei VC-Projekten und WinCE-Geräten.) Siehst du denn unten in der Statusleiste eine Fortschrittsanzeige?
Grundlegend solltest du auf solch Geschwätz wie "Windows Forms" wird aussterben keinen Wert setzen. Das sind subjektive Meinungen der meisten Leute. Bisher hat Microsoft nicht einmal eine Andeutung in die Richtung gemacht.
Mit welcher GUI-Technologie du anfängst sollte insofern dir überlassen bleiben. Ich würde jedoch, da es wenn man es einmal verstanden hat extrem bequem ist WPF empfehlen. Gerade für Visualisierungen ist das extrem Cool.
Bei Anwendungen zur Daten-Ein/Ausgabe reicht eine kleine Forms App aber allemale. Ich handhabe das so, das ich nur in WPF umsetze, was mir Forms nicht / nur spärlich / oder sehr schwer bietet.
Hmm vielleicht uebersehe ich ja etwas aber ich kann nirgens finden wo du Position oder Length vom Stream benutzt?
Btw.: Dein Code ist EXTREM schlecht zu lesen, man brauch nicht in jeder Zeile einen Kommentar zu schreiben. Das macht die Sache naemlich unfassbar unuebersichtlich.
Weitere Tips:
1. Warum deklarierst du tmpstream schon in der Zeile 10 wenn du es aber erst in der Zeile 20 benutzt?
2. Stream ist eine Klasse welche das IDisposable Interface implementiert, wenn du solche Klassen hast dann benutz bitte die using-Bloecke.
3. Lokale Variablen werden in .NET(und auch in vielen anderen Sprachen) nicht gross geschrieben.
secondsun schrieb:
Ein BGW kommt im Moment nicht in Frage da wir mit dem Entity Framework arbeiten und das ist ja bekanntlich nicht Thread safe.
Nach dieser Logic wäre keine Applikation die das EF verwendet eine Multithread Applikation
Ich habe daheim ein EF Projekt, auf arbeit ebenso.
Und wir arbeiten mit Threads - da staunste wa
Ich habe einen WCF-Service den ich mittels "Add Service Reference" hinzufüge, inklusive der Generierung von Asynchronen Schnittstellen. An sich auch kein Problem, nur ist mir noch nicht klar wie die Benennung der erzeugten Klassen (Konkret die Bennenung der results in den von AsyncCompletedEventArgs abgeleiteten Klassen erzeugt).
Ich verwende derzeit vereinfacht MessageContracts als Rückantwort:
[ServiceContract/*...*/]
public interface IFooService
{
[OperationContract]
GetFoolisteResult GetFooliste(
GetFoolisteParameter parameter);
}
[MessageContract]
public class GetFoolisteResult
{
[MessageBodyMember]
public bool FooStatus;
[MessageBodyMember]
public IList<Foo> FooList;
}
//...
Nun generiert VS daraus eine Klasse wie in Etwa:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public partial class GetFoolisteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
public GetAktionAnzeigelisteCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState)
: base(exception, cancelled, userState) {
this.results = results;
}
// Manche Eigenschaften werden so benannt wie im MessageContract...
public bool FooStatus {
get {
base.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
}
// ...aber eine wird immer mit Result benannt...
// Die Regel welche ist mir aber noch verborgen.
public System.Collections.ObjectModel.ObservableCollection<Foo> Result {
get {
base.RaiseExceptionIfNecessary();
return ((System.Collections.ObjectModel.ObservableCollection<Foo>)(this.results[1]));
}
}
}
Mein Problem ist einfach: Nach welchen Regeln erfolgt die Benennung, und kann man diese ggf. irgendwie beeinflussen. Laut den Rückgaben ist es immer das letzte Element in results, aber wie die Reihenfolge wiederum erfolgt ist mir schleierhaft (sie entspricht nicht der Anordnung in der entsprechenden Klasse).
Nachtrag:
Nachdem ich gedacht hatte, die Lösung über "[MessageBodyMember(Order = ...)]" gefunden zu haben, ist die Lösung wohl in meinen Fall "Allways generate message contracts" zu verwenden (Die Order hat jedenfalls keine Auswirkungen an dieser Stelle).
Das letzte Element im DockPanel nimmt den restlichen Platz.
<Window ...>
<DockPanel>
<Menu DockPanel.Dock="Top">...</Menu>
<StatusBar DockPanel.Dock="Bottom" Height="30">...</StatusBar>
<Grid >...</Grid>
</DockPanel>
</Window>
Das DockPanel geht seine Childs von oben nach unten durch.
Er fragt jedes einzelne wie Groß es sein will, und wo, dann positioniert er des.
Sobald er beim letzten Control ankommt gibt er den Child dann die restlichen verfügbaren Platz.
asc schrieb:
Wenn die Komponenten mit dem Projekt zusammen in ein Paket gelinkt werden,
Sie werden eher gepackt als gelinkt, so wie in einer *.docx Datei von Word verschiedene XML-Dateien stecken.
Die Isolation dieser Komponenten ist also eher eine Folge der Sandbox. Falls diese neue Art von COM außerhalb von Metro auftauchen sollte, dürfte das nicht mehr der Fall sein.
By the way, bald gibt es Literatur zum Thema:
http://blogs.msdn.com/b/microsoft_press/archive/2012/04/21/mark-your-calendars-programming-windows-sixth-edition-is-coming.aspx
Nein nein, muss es natürlich nicht. Ich habe denoch einen anderen Weg über einen Multiconverter gewählt.
Trotzdem würde mich interessieren warum das so ist, da der ItemContainerGenerator noch recht neu für mich ist.
y-vonne schrieb:
Ich dachte halt wenn das Key Objekt ausserhalb der dictionary nicht mehr verwendet wird kann es gelöscht werden.
Meine Intention war allerdings dass der Eintrag dann komplett aus der Dictionray verschwindet. Und dachte nicht daran dass nur die Reference auf null geht
Das wäre zwar über einen Finalizer möglich, aber nicht zu empfehlen. Du solltest lieber das Design deiner Applikation überdenken.
In C# räumt der GC für einem zwar den Speicher auf, aber man muss trotzdem selber die Objekte aufräumen. Daran kommt man nicht vorbei.
Grüssli
LordTerra schrieb:
und lernen geht halt auf verschiedene arten ...
ich persönlich lerne schneller wenn ich beispiele bekomm die ich testen kann und wenn ich was nicht versteh gleich nachfragen kann was ich falsch gemacht hab ...
das geht eben nicht wenn man bücher oder msdn liest ..
Doch geht es! Ich lerne genau gleich und wahrscheinlich viele hier auch. Du liest die MSDN und das Buch. An beiden Stellen findest du sehr wahrscheinlich bereits Beispiele. Ein Fachbuch ohne Beispiele kann man gleich in die Mülltonne werfen. Und die MSDN ist voll damit!
Falls es in der MSDN trotzdem mal keines hätte, dann hast du zumindest die wichtigen Fachbegriffe. Danach kannst du suchen und dann spätestens findest du wieder Beispiele. Wichtige Seiten für die Suche:
stackoverflow.com (ist in der MSDN Suche enthalten)
codeplex.com
codeproject.com
codeguru.com
Und dann natürlich auch die Suche in den verschiedenen Foren, wie hier, auf MyCSharp oder anderswo.
Und ich kann dir versichern, du wirst damit deutlich schneller sein, wenn du dieses Suchen mal beherrscht. Und kommst auch zu deinen Antworten, wenn alle anderen nicht anwesend sind. Schau nur mal, wie lange es benötigt hat, bis du die Antwort auf diese Frage hattest. Und das ist normal in Foren. Da kann es ruhig mal ein paar Stunden gehen, bis man die richtige hat. Unter Umständen erhält man auch gar nie die "richtige".
Grüssli
In Pseudo-Code sollte folgendes helfen:
foreach Childnode in Node.Nodes
lChild.Add(Childnode);
Zu beachten ist, das die Childnodes den selben Typen haben wie deine selektierte Node.
Hallo Leute,
ich suche ein Snippet für den Chart (MS Visual Studio 2010).
Und zwar möchte ich mit dem Mauskursor über einen Datenpunkt im Chart drüberfahren, und die Daten des Datenpunktes, der sich unter dem Kursor befindet, einblenden.
Hat jemand von euch so ein Codebeispiel schon mal gesehen?
Vielen Dank im Voraus.
Ich habe es gefunden, bei der RichTextBox gibt es eine Eigenschaft namens SelectedFont. Damit kann man die Abmessungen eines Zeichens an einer Position berechnen.