Laden...
O
onlinegurke myCSharp.de - Member
Student/Hilfswissenschaftler Dresdner in Karlsruhe Dabei seit 15.01.2007 778 Beiträge
Benutzerbeschreibung

Forenbeiträge von onlinegurke Ingesamt 778 Beiträge

14.01.2008 - 14:33 Uhr

Jetzt wo du es sagst, es gibt einen Weg, und der ist sogar sehr, sehr einfach: Implementiere IExtenderProvider, mach ein Attribut an deine Klasse (ProvidePropertyAttribute("Extends")) und die beiden Methoden bool GetExtends(Object obj) mit DescriptionAttribute und was du sonst noch brauchst versehen und SetExtends(Object obj, bool value).

14.01.2008 - 11:49 Uhr

Finger weg von FieldInfo, das ist nur fuer wesentliche schlimmere Sachen gut. Was du brauchen wuerdest, waere PropertyInfo, wovon ich dir aber ebenfalls abraten wollen wurde. Nimm PropertyDescriptor (System.ComponentModel). Da kommst du mit TypeDescriptor.GetProperties() auch einfach ran.

und forms.Controls_ ist nur die halbe Wahrheit. Die volle Wahrheit lautet Rekursion, da die Controls auch ineinander verschachtelt sein koennen. Aber bei sowas, mach dich erst mal mit den Interna von Windows Forms vertraut!

10.01.2008 - 12:58 Uhr

hab mir vor einem Jahr auch eine TimeTracking Anwendung als WinForms TrayApp geschrieben, die immer mitgestartet ist und beim Systemshutdown alles in eine Datei geschrieben hat, damit kannst du mit gewissen Vorraussetzungen (man arbeitet nicht über Mitternacht und für Pausen werden feste Zeitspannen verwendet) komplett automatisiertes TimeTracking betreiben ohne jeden Input. Und das schreibt sich schnell. Ich hab glaub ich inklusive integrierten Korrekturoptionen (falls man nicht als erstes den Rechner anschaltet oder nach dem Ausschalten nochwas machen muss) einen knappen Tag dran gesessen.

10.01.2008 - 08:43 Uhr

ich habe ja schon gesagt, CodeDom geht nur, wenn du C# generieren willst.

ändert aber nix an der Tatsache, dass die Aussage falsch ist 🙂. Man kann mit CodeDOM beliebigen .NET Code erzeugen, alles eine Frage des CodeProviders. Du kannst auch vom C#-Codeprovider ableiten und deine Sprachspezifikation an den entsprechenden Stellen einfach anpassen. Das wäre ja offen und ehrlich gesagt auch blödsinnig, wenn MS sowas wie CodeDOM nur fuer eine einzige Sprache macht.

10.01.2008 - 00:31 Uhr

Hallo an alle,

kennt jemand eine gute Document Object Model Bibliothek für VS-Projekte und Solutions aller Art (am wichtigsten wären mir die Unterstützung von C# und VB.NET)?

Danke schon mal im vorraus

02.01.2008 - 20:04 Uhr
  1. Gewöhn dir dir Verwendung von Hashtables ganz schnell ab und benutz stattdessen Dictionary<TKey,TValue>

  2. Was heißt nicht viel. Wird nur die erste Datei eingelesen?

  3. Wann willst du wo und wie a durch b ersetzen?

von den Fragen her ist das aber vollkommen ok, wirklich "noobisch" wäre gewesen, wenn du gefragt hättest "Wie kann ich Dateien auslesen und die speichern". Und das richtige Forum hast du auch getroffen. Weiter so! 🙂

02.01.2008 - 19:37 Uhr

Zeig mal den Code mit in dem die Daten verarbeitest. Ich meine du holst dir nur die eine Datei aus den Ereignisdaten, auch wenn da mehr drin sind.

02.01.2008 - 19:04 Uhr

zumindest für 2005 ist das m.E. ungültig, 2008 k.A.

02.01.2008 - 15:18 Uhr

Wenn du die Programmdatei eines selbstgeschriebenen Programms untersucht, würde ich schon sagen, dass das der Protokolklfall ist. Das Programm ist ja eigentlich dein geistiges Eigentum und nicht das von TI. Wenn du ein Bild malst und speicherst es als png ist es auch dein geistiges Eigentum, und nicht von denen, die png erfunden haben...

30.12.2007 - 14:55 Uhr

hab jetzt doch eine (sehr hässliche) Methode gefunden:


using alt=System.Drawing;
using neu=System.Windows.Media;

neu.ImageSource Convert(alt.Image image)
{
 neu.Imaging.BitmapImage = new neu.Imaging.BitmapImage();
 IO.MemoryStream ms = new IO.MemoryStream();
 image.Save(ms,alt.Imaging.ImageFormat.Png);
 bs.SourceStream=ms;
 Convert=bs;
}

Problem ist nur, dass WPF das Bild jetzt nicht gleich lädt, sondern sich nur den Stream merkt. Man darf den MemoryStream also auch nicht zumachen 🙁
Da kann man auch gleich das Bild ganz in einer temporären Datei speichern... 🙁
Naja, was solls, ist halt inkompatibel...

30.12.2007 - 13:53 Uhr

Gibt es irgendeine Möglichkeit, eine WinForms-Grafik (System.Drawing.Image) in eine WPF Anwendung zu integrieren, außer den Weg über WinFormsHost? Laut Reflector gibt es eine Abhängigkit der PresentationCore Assembly auf System.Drawing, aber ich seh hier keine Möglichkeit, wie man das anstellen könnte...

14.12.2007 - 17:42 Uhr

Ich würde kein Array nehmen, sondern eine eigene Collection schreiben. Das hat zwei Vorteile:

  1. Die Person kann beliebig viele Termine haben, statt nur eine festgelegte Zahl

  2. Du kannst darauf reagieren, wenn der Person ein Termin hinzugefuegt wird oder einer entfernt wird (zB um den Termin aus dem Kalender zu streichen bzw hinzuzufuegen)

14.12.2007 - 12:58 Uhr

um das mal klarzustellen: Von welchem Subsystem redest du? WinForms oder WPF? Weil der Unterschied, gerade was Layout und Generik anbelangt, ist gewaltig. Generik in WinForms geht eigentlich fast gar nicht, bei WPF brauchst du halt nur ein XAML zu generieren...

13.12.2007 - 14:20 Uhr

...oder CarlosAgExcelWriter verwenden 🙂
Damit ist xls auch sehr einfach, weil alles DOM-basiert ist.

13.12.2007 - 13:47 Uhr

http://go.microsoft.com/?linkid=5409655

Oder so was ähnliches. Zieh dir einfach mal die Uebungsfragen zu den Zertifizierungen an. Ich glaube nicht, dass es da ein großes Problem gibt, wenn du da mal nett bei MS anfragst...

12.12.2007 - 15:58 Uhr

Ich hatte das Pech von technisch völlig desinteressierten Eltern (sind sie heute noch), hab erst mit 10 Jahren ueberhaupt einen Rechner zur Verfuegung gehabt (1997), dann aber auch gleich ein zum Pentium I aufgemotzter 386er. Meinen ersten eigenen Rechner hab ich mir erst bei meiner Konfirmation leisten können...

11.12.2007 - 08:50 Uhr

Naja, du muestest wahrscheinlich das Process-Objekt zwischenspeichern und dann irgendwie dahinterkommen, was das fuer ein Browser ist, um den dann automatisieren zu koennen.

Wie das genau geht hab ich allerdings keine Ahnung 🙁

11.12.2007 - 08:08 Uhr

Bei allen Fragen der Art "Welchen Aufruf gibt es?" müsste man aber dazu schreiben, ob C#3.0 und dessen erweiterungsmethoden erlaubt sind, ansonsten ist prinzipiell fast alles möglich.

10.12.2007 - 15:56 Uhr

Bei der Sache mit der Maximalzeit, dann bedenke bitte, das es auch noch Leute mit langsamer Inetverbindung gibt 🙁

10.12.2007 - 12:31 Uhr

Ich hatte das Problem auch mal, weiß aber leider nicht mehr genau, wie ich's gelöst bekommen hab, aber ich habe es gelöst bekommen. Ich meine das Problem war an einer anderen Stelle, nämlich eine Ungereimtheit im Editor. Nimm das Editor-Attribut auf alle Fälle mal vom Interface weg, das stört da nur.

Solches Fehlverhalten des PropertyGrids zeugt meistens von irgendwelchen Fehlern, die man spontan nicht vermutet, hab ich jedenfalls die Erfahrung gemacht 🙂

Du hast Recht, ein PropertyGrid arbeitet mit Descriptoren (und damit indirekt natürlich mit Reflection), und beruecksichtigt dabei 1. die Attribute der Property, 2. die Attribute der Instanz (auf gar keinen Fall die Attribute des PropertyTyps).

Mal noch ein paar Fragen:
-Reden wir von Laufzeit, oder Entwicklungszeit in einer IDE?
-Wenn Laufzeit: Wird ein benutzerdefinierter Serviceprovider eingebunden?
-Custom Paint benutzt du nicht, oder?
-Wird das Editorformular gecachet oder jedesmal neu instanziert?

Ich würd eigentlich gern mal den Code des Editors sehen, v.a. EditValue...

10.12.2007 - 08:48 Uhr

Hm, normalerweise kommt das PropertyGrid mit Interfaces zurecht. Ich vermute mal, wenn du auf das Dreieck drueckst, dann passiert nix? Versuch mal dem Property explizit deinen Editor zuzuweisen...

//edit: wobei, wenn der Editor instanziert wird, sollte zweiterer Vorschlag eigentlich nicht zur Loesung fuehren...

07.12.2007 - 19:49 Uhr

ich persönlich finde den Support bei Ehemann 5.0 sogar noch besser 🙂

07.12.2007 - 19:38 Uhr

Hier das Pendant dazu:

Liebe Hotline!
Ich habe letztes Jahr ein System von "Freund 5.0" auf "Ehemann 1.0" aufgerüstet und stelle jetzt fest, dass das neue Programm unvorhersehbare Änderungen an meiner Konto-Software vornimmt, speziell begrenzt es den Zugang zu den Programmen "Kleidung", "Blumen" und "Schmuck", die alle unter "Freund 5.0" hervorragend funktionierten. Davon stand nichts in Ihrem Begleithandbuch.
Darüber hinaus deinstalliert "Ehemann 1.0" viele andere wertvolle Programme wie "Dinnerdancing 7.5", "Kreuzfahrt 2.3" und "Opernball 6.1". Dafür werden neue, völlig sinnlose Programme wie "Pokernacht 1.3", "Samstagsfußball 5.0", "Golf 2.0" und "Unordnung 4.5" installiert. "Konversation 8.0" läuft auch nicht mehr, sondern lässt jedes Mal das System abstürzen. Auf gar keinen Fall bekomme ich "Windelwechsel 14.1" oder "Hausputz 2.0" zum Laufen. Ich habe "Nörgeln 5.3" laufen lassen, aber selbst dieses Allzweckprogramm konnte nicht viel ausrichten.
Bitte helfen Sie mir!
Jane


Liebe Jane!
Dies sind relativ häufig auftretende Probleme, die besonders von Frauen gemeldet werden. Sie beruhen allerdings auf einem grundliegenden Missverständnis. Viele Leute rüsten Ihr System von "Freund 5.0" auf "Ehemann 1.0" auf, ohne zu bedenken, dass "Freund 5.0" vor allem ein Spielprogramm ist. "Ehemann 1.0" ist dagegen ein Betriebssystem und wurde von seinen Programmierern so ausgelegt, dass es mit möglichst wenig anderen Programmen auskommt.
Darüber hinaus können Sie "Ehemann 1.0" nicht einfach deinstallieren und zu "Freund 5.0" zurückkehren, da das bei "Ehemann 1.0" nicht vorgesehen ist. Gewisse versteckte Dateien in Ihrem System würden "Freund 5.0" veranlassen, das System "Ehemann 1.0" wieder herzustellen, so dass Sie nichts gewinnen würden.
Sie können "Ehemann 1.0" weder löschen noch deinstallieren oder anderweitig aus Ihrem System entfernen, wenn es einmal installiert wurde. Neue Programme können nur einmal im Jahr installiert werden da "Ehemann 1.0" nur einen beschränkten Speicher verwenden kann. Fehlermeldungen sind normal und integraler Bestandteil von "Ehemann 1.0". In Ihrer Verzweiflung haben einige Frauen versucht, ihre alten Lieblingsprogramme wieder (bzw. neue, interessantere Programme) lauffähig zu bekommen, indem sie "Freund 6.0" oder "Ehemann 2.0" installierten.
Leider ergeben sich in den meisten Fällen mehr Probleme als bei "Ehemann 1.0".Lesen Sie in Ihrem Handbuch unter dem Modul "Scheidung/Unterhalt" nach. Sie werden feststellen, dass dieses Programm nur sehr unzuverlässig funktioniert und nur zusammen mit der Software "Herzleid 1.3" läuft. Unsere Empfehlung: Bleiben Sie bei "Ehemann l.0" und lernen Sie mit dem unlogischen Programm umzugehen. Da ich selbst "Ehemann 1.0" installiert habe, empfehle ich das genaue Studium des Kapitels Allgemeine Partnerschaftsfehler (AP). Dies ist ein hervorragendes Hilfsprogramm, das versteckt im Hintergrund, mitläuft und integraler Bestandteil von "Ehemann 1.0" ist. "Ehemann 1.0" muss dadurch die GESAMTE Verantwortung für ALLE Fehler und Probleme im Umgang mit dem Programm auf sich nehmen, auch wenn sie vom Bediener ausgelöst wurden. Dieses Hilfsprogramm rufen Sie mit dem Befehl: ,,C:\Ich_dachte_du_liebst_mich" auf. Manchmal muss gleichzeitig bei der Eingabe des Befehls das Programm "Tränen 6.2" im Hintergrund mitlaufen, damit das Utility startet. In der Regel reagiert "Ehemann 1.0" mit dem Start der Programme "Entschuldigung 12.3" und "Blumen+Schokolade 7.6".

Technik-Tipp:
Rufen Sie dieses Utility nicht zu häufig auf. Ein Missbrauch kann die Ursache von weiteren AP's werden und Ihrerseits die Eingabe von "C:\Entschuldigung" erfordern, bevor "Ehemann 1.0" seinen normalen Betrieb wieder aufnimmt. In extremen Fällen veranlasst ein Missbrauch auch "Ehemann 1.0", die Anwendung "Tagelanges_Grummeln 2.5" aufzurufen oder, was noch schlimmer ist das System auf "Schweigsames_Couchhocken 6.0" herunterzufahren. In diesem Betriebszustand produziert "Ehemann 1.0" "Fettbauch-Dateien" und "Schnarchmusik-Wavedateien", die sich nur schwer wieder aus dein System entfernen lassen.

Folgen Sie stattdessen diesem technischen Tipp:
Denken Sie immer daran: Das System übernimmt automatisch alle Verantwortung für AP's und läuft weitgehend berechenbar. Durch diesen rechenintensiven Ablauf kann "Ehemann 1.0" allerdings nur begrenzt die Programme ausführen, die unter "Freund 5.0" wie selbstverständlich gestartet werden konnten. "Ehemann 1.0" ist ein tolles Programm. Es besitzt allerdings nur geringe Speicherkapazität und ist nur begrenzt lernfähig. Mit geschickter Auswahl von Zusatzsoftware können Sie die Systemleistung enorm steigern. Ich persönlich empfehle "Kochkunst 3.0" oder "Dessous 5.3" und "Geduld 10.1". Laufen alle drei Zusatzprogramme gleichzeitig, schwingt sich "Ehemann 1.0" zu Hoechstleistungen auf.
Nach einigen Jahren werden Sie "Ehemann 1.0" besser kennen und viele wertvolle Features wie "Klempner 2.1", "Kuscheln 4.2" und "Besterfreuend 7.6" entdecken.

Noch eine letzte Warnung! Installieren Sie NIEMALS "Schwiegermutter 1.0", wenn Sie "Ehemann 1.0" aktiviert haben. "Ehemann 1.0" ist zu diesem Programm nicht kompatibel und wird das Betriebssystem teilweise herunterfahren. Lauffähig sind dann nur noch "Angeln 6.4" und "Kneipe 5.2". Wird "Schwiegermutter 1.0" wieder entfernt, kehrt "Ehemann 1.0" wieder in den normalen Betriebszustand zurück.
Ich hoffen, diese Hinweise haben Ihnen weitergeholfen.
Vielen Dank, dass Sie "Ehemann 1.0" gekauft haben.
Wir von der Hotline wünschen Ihnen viel Erfolg in den nächsten Jahren. Wir sind überzeugt, dass Sie unser Produkt mit den Jahren immer besser beherrschen lernen!

06.12.2007 - 16:36 Uhr

müssen die wohl gemacht haben. Bei mir jedenfalls auch negative Antwort...

05.12.2007 - 20:11 Uhr

Original von aschbacher
danke habe es gelöst..

ist aber auch nicht der beste weg um zu sagen, dass das Problem geloest ist. Lieber immer das Orginalproblem da lassen!

05.12.2007 - 16:49 Uhr

Wenn du nur die DLL hast, dann trifft die zweite Option in Kraft (starken Namen verpassen lassen) 🙂. das geht natuerlich nicht immer und gleich gar nicht, wenn du keinen Einfluss auf die Entwicklung hast. Achso, nicht, dass wir uns missverstehen? Um was fuer eine Assembly handelt es sich?

05.12.2007 - 16:15 Uhr

Es sollte eigentlich reichen, wenn die dazugehörige xml im gleichen Ordner ist. Im Zweifel mal Doku generieren lassen 🙂

05.12.2007 - 15:41 Uhr

Das ist schon das nächste: Laut Namenskonventionen sollten sich Namen immer durch mehr als Groß- und Kleinschreibung unterscheiden, ansonsten ist der Code mit anderen .NET-Sprachen inkompatibel. e.g. VB.NET unterscheidet nicht zwischen Groß- und Kleinschreibung, d.h., alles, was du so in C# programmierst, ist dann in VB.NET unbenutzbar.

05.12.2007 - 14:45 Uhr

Naja, der Assembly BytesRoad.Net.Ftp einen starken Namen verpassen (bzw lassen), anders geht es nicht.

05.12.2007 - 14:34 Uhr

Trotzdem würde ich es mindestens im Fall von WinRar logischer finden, wenn die WinRar als WinRar-selbstextrahierendes-Archiv als *.exe anbieten würden und bei nem Modem und CD-Laufwerk damals noch ne Diskette mit beizulegen wär ja wohl auch nicht das Problem gewesen, aber egal.

*Anmerkung*
Ich arbeite momentan in Irland im IT Helpdesk für einen ungenannten Pharmakonzern, ich weiß, was EUs alles hinkriegen (bzw. eben nicht)

04.12.2007 - 17:21 Uhr

Wenn ihm darauf die Lust vergeht, dann ist er blöde 😜
Im Ernst, es gibt Programme, mit denen du dir die Runtime sparen kannst, die sind aber 1. teuer und 2. unsinn (meistens zumindest)

Es gibt sogar zwei Standardwege, von denen der eine aber nur ab VS Pro begehbar ist, das wären dann sog. Setup-Projekte.

Der andere für dich wahrscheinlich in Frage kommende Weg sind die schon im VS Express integrierten ClickOnce Installationsroutinen. Die kannst du mit sehr wenigen Clicks erstellen.

04.12.2007 - 16:19 Uhr

Hier gibts noch ein kostenloses ebook dazu: http://www.steinmole.de/d/d_buch.pdf

Bin mal gespannt, wie sich die Sprache entwickelt. Ich glaube aber nicht, dass sie IL Konkurrenz machen kann (und damit letztendlich auch C#). Es sei denn MS stellt dafür dann auch ne .NET-Portierung bereit (D#?)

04.12.2007 - 11:31 Uhr

@herbivore:
Jemdn der kein WinRar entpacken kann wird seltenst in der Lage sein ein Kommandozeilentool zu bedienen. Theoretisch hast du Recht, praktisch hab ich da meine Zweifel...

03.12.2007 - 18:46 Uhr

Aufgabe: Beweisen Sie, dass alle ungeraden Zahlen größergleich 3 Primzahlen sind

Lösung(en):

Mathematiker: 3 ist prim, 5 ist prim, 7 ist prim, das geht dann schon per Induktion, Beweis ist trivial

C#-Programmierer: 3 ist prim, 5 ist prim, 7 ist prim, SystemOverflowException

Physiker: 3 ist prim, 5 ist prim, 7 ist prim, 9 ist Messfehler, 11 ist prim...

Psychologe: 3 ist prim, 5 ist prim, 7 ist prim, 9 ist prim, aber unterdrueckt es, ...

Jurist: 3 ist prim und ist Präzedenzfall

Theologe: 3 ist prim und das reicht mir schon

Mediziner: Was ist eine Primzahl?

30.11.2007 - 14:55 Uhr

Im Code geht das auf alle Fälle, im Designer müsste es eigentlich auch gehen, weil ControlBase automatisch den Designer von UserControl erbt.

Mit welchen Attributen hast du die Steuerelemente versehen?

30.11.2007 - 14:25 Uhr

Zu deinem eigentlichen Hauptproblem: Leite dein Basis Control von UserControl ab und mach das Basis Control nicht abstract, dann sollte das funktionieren.

Falls du fragst: Es geht auch anders, aber das sollte dir egal sein. Das ist nicht der performanteste Weg, aber es sollte der einfachste sein. Und das bisschen Performance und die Vererbungshierarchie würdest du sonst teuer bezahlen müssen (nämlich mit der Entwicklung eines eigenen Designers, die Frameworkdesigner sind leider alle internal).

29.11.2007 - 12:52 Uhr

hat die DLL einen starken Namen?

29.11.2007 - 11:04 Uhr

das liegt dann aber nicht an dir, sondern an der externen Komponente...
Hoechstwahrscheinlich, zumindest

29.11.2007 - 11:02 Uhr

Das MyControl dann im Designer anzeigen lassen, das geht nicht (der Designer benoetigt immer die Basisklasse, und die ist generisch und bietet offensichtlich keinen parameterlosen Konstruktor an), aber in einem Formular solltest du MyControl benutzen koennen, wenn du fuer MyControl einen parameterlosen Konstruktor anbietest, was du ja aber sowieso tun musst...

29.11.2007 - 08:38 Uhr

nein, den Ordner kannst du meines Wissens nicht ändern. Aber es gibt eine einfachere Möglichkeit für dein urspüngliches Problem. Geh mal auf die Dateien im Projektmappenexplorer, bind sie in das Projekt ein und geh dann in die Eigenschaften. Da hast du reichlich Möglichkeiten...

28.11.2007 - 17:30 Uhr

Ich mein ja nur, wegen der Ausgangsfrage, "fit in C#" ist so eine Sache, das ist alles und nichts. Niemand im Forum wird das .NET-Framework in und auswendig kennen, incl. aller Unterklassen und in allen Bereichen, das wird auch auf keinen Microsoft-Mitarbeiter zutreffen, da bin ich mir ziemlich sicher. Auf der anderen Seite kennen aber sehr viele Leute gewisse Grundlagen, von denen aber einige rein OOP, die naechsten generell Informatik, andere .NET, andere wirklich C# sind. Ich glaub aber nicht, dass sich Ichthys ausschliesslich auf die Syntax der Programmiersprache C# bezogen hat. Insofern ist die Frage sowieso sehr schlecht zu beantworten, weil man eigentlich nach den verschiedenen Bereichen komplett trennen müsste, selbst, wenn man nur die Grundlagen der Programmierung mit C# betrachtet.
Nun kommt dazu, dass selbst fuer diese Grundlagen der Lernaufwand extrem unterschiedlich ist. "Wie definiere ich eine Klasse in C#" ist nun mal wesentlich einfacher zu beantworten als "Was ist eine Klasse eigentlich?"

28.11.2007 - 17:10 Uhr

in Namespace_A gibt es jetzt aber eine Methode die eine andere in Namespace_B aufruft

Methoden stehen nie in Namespaces, sondern immer in Klassen. Zeig mal bisschen mehr Code, weil ich glaube du hast den Code verfaelscht gekuerzt

28.11.2007 - 16:30 Uhr
public class MyControl: MyDGV<T1,T2, T3>
{

}

sollte reichen, ja. Einmal kompilieren, dann sollte es auch in der Toolbox erscheinen, und wenn MyDGV fehlerfrei programmiert ist, dann sollte es dann auch gehen.

28.11.2007 - 15:26 Uhr

Ich bin dafür, dass es keine "wichtigsten" Klassen im .NET-Framework gibt, mit Ausnahme der elementaren Datentypen, aber deren Verständnis ist nicht zu schwer (zumindest, wenn man nicht so genau hinguckt, was man aber auch nicht zwingend tun muss). Selbst das Denken in Kategorien wie WinForms-Profi und ASP.NET-Programmierer ist noch viel zu allgemein um irgendwie ne Aussage treffen zu koennen, welche Klassen wichtig sind. Jemand, der Oberflächen schreibt hat z.B. andere Bedürfnisse als jemand, der Steuerelemente schreibt, und zwar komplett andere. Trotzdem sind beide ab einem gewissen Grad als WinForms-Experten zu bezeichnen, auch wenn der eine, zwar sonstwieviele Steuerelemente und wahrscheinlich noch von Drittanbietern kennt, keinen blassen Schimmer hat, wie man einen Designer schreibt.

Ich persönlich habe das .NET-Framework kennengelernt als ich die Möglichkeit bekommen habe als Zivi zu programmieren, hatte zu diesem Zeitpunkt keine Ahnung von OOP-Programmierung. Das war vor anderthalb Jahren. Ich hab dann erstmal 700 Seiten Buch gelesen ueber .NET-Framework 1.1 (von Holger Schwichtenberg, sehr zu empfehlen, ist aber VB.NET, war die Vorgabe). Als ich dann angefangen habe hat ich dann das Nachfolgebuch zur Seite und hab losprogrammiert 🙂. Ja und wenn man 8 Stunden am Tag im wesentliche programmiert, dann kriegt man halt auch mit der Zeit ein Gefuehl dafür 🙂 und jetzt kann ich so ziemlich alles, aber nichts richtig gut (außer vllt. Entwurfszeitunterstützung von WinForms Controls)

28.11.2007 - 13:59 Uhr

Das einfachste wär doch, wenn du ein WinForms Fenster offen hälst, weil das überwacht automatisch die Windows-Nachrichtenschleife und wird ggf. beendet. Wenn als Reason im FormClosing-Event Shutdown drinsteht fängst dus ab mit shutdown -a und e.Cancel = True.

28.11.2007 - 13:46 Uhr

Generische Controls werden meines Wissens nicht wirklich gut unterstützt. Einzige Lösung: Auf nicht-generisches Control ableiten.

23.11.2007 - 19:57 Uhr

Interessant, dass LINQ das statisch so optimiert, aber das ist statisch, nicht dynamisch. Ich wuerde mich sogar aus dem Fenster rauslehnen und sagen, dass das groesstenteils kommt, weil der Compiler die Liste wegoptimiert, aber das ist spekulativ. Jedenfalls ist die Abfrage statisch, sollte ja aber dynamisch sein.

22.11.2007 - 15:51 Uhr

@Rasta:
XMLWriter ist eher eine Performance- als eine Philosophie Frage, im Gegensatz zu XMLDocument cached XMLWriter nämlich nicht das gesamte XML-Dokument, sondern arbeitet das ganze einfach nur ab. XMLDocument stellt einfach nur ein Dokument als Objekt dar. Und jetzt rate mal, was passiert, wenn du bei XMLDocument auf Save "drückst"? Richtig, es wird ein XMLWriter erstellt, der dann das Arbeitstier mimt. Wenn das aber viele Daten sind, die da aus der Datenbank kommen, dann kann es sein, dass das XMLDocument unglaubliche groß wird und Arbeitsspeicher belegt, das Problem hast du mit XMLWriter direkt verwenden nicht (weil da alles sofort in eine Datei geschrieben wird).

22.11.2007 - 15:42 Uhr

Das schreit förmlich nach einer abstrakten Basisklasse Car, die eine zu überschreibende Methode Drive() besitzt und damit IMovable implementiert.

//edit: Da sieht man mal, was eine genaue Fehlerbeschreibung so alles bewirken kann 🙂

22.11.2007 - 15:38 Uhr

echt? Haut der C#-Compiler da nen Fehler raus? Der VB-Compiler nämlich nich, soweit ich weiss (keine IDE zur Hand...)