@Badestrand:
Also so "portable" Anwendungen für USB Stick etc. mit .NET zu entwickeln halte ich für eine ganz doofe Idee, eben wegen dieser Schwierigkeiten.
Du hast aber natürlich Recht, das wäre ein Anwendungsfall.
Verstehe nur nicht wie ich das machen soll...
Habe das Problem jetzt sowieso anders gelöst.
Ich habe einfach in der Klasse Form1, in der die combobox ist einen zusätzlichen button, "neu laden" hinzugefügt.
So kann man die Wörter jetzt mit der Methode Fächerliste einlesen, muss dann aber um die Combobox neu zuladen den Button "neu laden" drücken, der ja in der geleichen klasse wie die Box ist.
Danke für deine Hilfe und schönen Tag noch
mfg Root
Das eine ist die technische Realisierung von Generics und das andere das andere das Verhalten (wie es die Sprach Sepzifikation vorschreibt) von Generics.
Das darf nicht verwechselt werden.
Die technischen Realisierung ist ein Impl. Detail.
Simon
abc.w schrieb:
Manchmal gibt es Situationen, wo man ein "if-else if" verwenden muss, z.B. in einem Bootloader für einen Mikrocontroller. Der Bootloader muss unbedingt 100% aus dem RAM laufen, und da der Compiler für ein "switch-case" unter Umständen irgendeinen optimierten Code aus einer Library einsetzt, die im Flash steht und nicht ins RAM ausgelagert werden kann...
Abgesehen davon dass das mit C# nun wirklich nichts zu tun hat... hängt es ganz vom Compiler ab wann und wo Runtime-Library Funktionen verwendet werden. Ein Compiler könnte genauso eine "if-else" Orgie "erkennen", einen Baum draus machen, und eine Runtime-Library-Funktion verwenden um den Baum zu "parsen". Hättest du wieder dasselbe Problem.
Da ich immer ne DataView dazwischen hatte kann ich Dir das für ne reine GrdiView nicht sagen. Aber die MSDN ist auch für Dich da, einfach mal ein wenig lesen.
(Es ist jetzt unbekannt ob Du die DGV unbound nutzt oder an ein DataSet gebunden hast und und und)
Die Methode die Du suchst hat vermutlich den Namen Add, AddRow oder irgendwas anderes in die Richtung. Wie gesagt, einfach mal die Hilfe benutzen.
Man kann die Datei auch als Ressource einbinden und ich vermute mal stark, dass genau das gefragt war:
Einfach in den Projektoptionen unter „Resources“ eine neue Standard-Ressourcendatei erstellen und Deine Datei per „Add Ressource“ > „Add Existing File …“ auswählen.
Dann kann im Code per <Projektnamensbereich>.Properties.Resource.Name_der_Datei auf den Inhalt der Datei zugreifen.
Du solltest keine Daten direkt im DataGridView ändern, sondern alles über die DataTable laufen lassen (sonst werden deine Daten beim Auslesen asynchron).
Und warum willst du denn keine Schleife verwenden? Ändere doch einfach das Beispiel entsprechend deinen Anforderungen ab.
Die Lösung die Klasse immutable zu machen ist technisch sicherlich möglich, aber das wäre doch aus völlig falschem Grund eingesetzt und der so erzeugte Code ist viel umständlicher als er sein müsste. Abgesehn von evtl. möglichen Performanceeinbußen da ja laufend neue Objekte der Klasse erzeugt werden, obwohl überhaupt nicht nötig.
Der Eventansatz von Konrad Rudolph ist der technisch viel bessere, auch wenn er bissle Arbeit bedeutet, es kommt halt net alles umsonst. Nur brauchst du nicht unbedingt was selber definieren, meist reicht auch INotifyPropertyChanged, je nachdem wie du drauf reagieren willst auf eine Zustandsänderung des Objektes.
hustbaer schrieb:
Ja hast recht, sowas ist nett.
Geht aber erst mit Studio 2008, oder?
Ja, na gut … aber es ging mir eigentlich eher weniger um die Extension Methods. Man kann das ganze ja auch als statische Funktion in einer Helper-Klasse machen.
Hallo,
und dieses Beispiel hier:
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.headercell.aspx
hilft nicht?
MfG,
Probe-Nutzer
hustbaer schrieb:
Schlecht ist nur dass man (weil Java es halt so vorgemacht hat, und man es sich nicht anders zu machen getraut hat?) blöderweise auf freie Funktionen verzichtet hat, und daher jetzt gezwungen ist blöde statische Memberfunktionen zu verwenden.
VB-Module FTW!
Konrad Rudolph schrieb:
... weil jede Klasse in der Hierarchie ihren eigenen Renderer mitbringt.
Ah ok, du meinst, das Frageobjekt ein Property 'Renderer' mit dem dazugehörigen Renderer besitzen muss...?!
Ja ok, du hast gewonnen..ist echt ne gute Idee...hätte ich eigentlich selbst drauf kommen können...
Danke dir
Wenn IBText die vom Studio generierte Ressourcenklasse ist (heißt die nicht normalerweise Resources?), greifst Du auf den String mit IBText.Top_MonthEdit zu. Die Platzhalter zu füllen hat mit dem Zugriff nichts zu tun, das machst Du ganz normal mit String.Format.
Wenn Du denkst, .NET sei lediglich ein aufgebohrtes COM, dann versuch mal, ein Betriebssystem auf COM-Basis aufzuziehen.
Ergibt keinen Sinn? Richtig. In .NET aber schon
http://www.codeplex.com/singularity
nep schrieb:
*: Es gibt aber Ausnahmen: Wenn du z.B. Werte-Typen speichern willst (primitive Datentypen, Structs), dann ist sogar auch aus Performanzgründen ganz klar die List<T> zu bevorzugen. Grund: Du sparst dir das (aufwändige) autoboxing-unboxing.
Das ist hier aber total irrelevant (und alles, was danach kommt, auch), denn es ging nicht um 'List<T>' vs. 'object[]' (das wäre ja auch idiotisch) sondern um 'List<object>' vs. 'object[]' und da besteht absolut kein Unterschied.
Ermittel aus allen Terminen denjenigen, der als nächstes fällig wird, dann ermittel die Zeit von jetzt bis zu diesem Termin und setze einen Timer. Wird eine neue Aufgabe hinzugefügt / gelöscht / geändert berechne die Zeitdifferenz neu. Für verschiedene Typen von Terminen werden Kategorien eingeführt, jede Kategorie hat seine Regeln.