Artikel-Liste  
Frank Dzaebel, erstellt am: 19.1.2006, zuletzt geändert: 12.03.2010
Kategorie: Sammlungen, .NET-Version: 1.1/2.0

Die folgenden Artikel sind eine Zusammenstellung von .NET-Tipps & Tricks, deren Beispielcode's fast ausnahmslos in C# geschrieben sind.
DateiTitelSummaryNetKategorieDownloadSpracheErstelltUpdate
Add-Ins.htmAdd-Ins unter C# 2.0Das Erweitern der Visual Studio IDE ist einfach geworden. Das ist in einigen Situationen praktisch und kann dem Entwickler nicht nur die Arbeit erleichtern, sondern auch Dinge ermöglichen, an die man ohne Add-In-Wissen nicht gedacht hat. Zwar liegen hier und da noch ein paar kleine Fallstricke, aber die Möglichkeiten sind verblüffend weitgehend und dabei doch mit wenigen Handgriffen erledigt.
Hier zunächst ein paar ausgesuchte Links:
2.0Implementation  10.05.200602.07.2006
Arbeitstage.htmArbeitstage berechnenEine sinnvolle Implementierung der Arbeitstage zwischen zwei bestimmten Tagen ist gar nicht so trivial. Hier eine mögliche Sichtweise, nebst Implementierung.2.0ImplementationDownload 07.08.200607.08.2006
AsynchronEventPattern.htmEreignisbasierte asynchrone MusterHier zwei Test-Projekte zu einem Code-Beispiel aus derMSDN. Bei beiden Projekten kann während der Berechnung nicht der Abbrechen-Button gedrückt werden, da die Berechnung die MessageLoop blockiert. Ersetzt manThread.Sleep(0)in allen Projekten aufThread.Sleep(1),funktioniert das dann. Im Beispiel wird es allerdings enorm langsam, sodass die Zahl 12345 benutzt werden sollte, um einen Effekt zu sehen.2.0ImplementationDownload 12.06.200712.06.2007
BinarySearch_Nearest.htmBinarySearch des dichtesten Elementes in C#Eine .NET 2.0 Dictionary.ContainsKey-Methode kommt etwa einer O(1)-Komplexität nahe und ist zum Suchen also eine der performantesten Möglichkeiten. In diesem Fall wird ein Element gesucht, das am dichtesten an dem zu suchenden Element liegt. Hier ist eine SortedList eine Möglichkeit, bei der man durch die Sortierung eine Binärsuche [SortedList.ContainsKey] ausführen kann und somit eine Performance von etwa O(log n) erreicht.2.0Implementation  21.03.200610.04.2006
BinaryWrite.htmEigene Klassen mit dem BinaryWriter serialisierenBinäre Serialisierer persistieren zwar in ein kryptisches Format, aber ihre Performanz und die geringe Größe der Zwischen-Objekte lässt sie in vielen Szenarien sinnvoll zum Einsatz kommen. Hier ein Beispiel:1.1/2.0Serialisierung  29.09.200529.09.2005
CalendarColumn.htmCalendarColumn für das DataGridViewIn folgendem DataGridView kann man durch Doppelklick eine Datums-Spalte formatiert editieren. Gleichzeitig ist auch die Angabe über einen DateTimePicker möglich.2.0Winform DataGridViewDownload 26.06.200524.06.2006
CdAuswerfen.htmCD auswerfenAuswerfen und Einziehen einer CD in C#.2.0MCIDownload 14.05.200714.05.2007
CheckBoxDoubleClick.htmUnterscheiden zwischen Klicks und DoppelklicksBei Controls, wie CheckBox und Button sind Ereignisse wie DoubleClick zurecht nicht für die Intellisense sichtbarund nicht direkt vorgesehen. Um es dennoch zu ermöglichen hat das reine Aktivieren des"ControlStyles.StandardDoubleClick"oft den Nachteil, dass das Click-Ereigniss dann doppelt (oder gar dreifach) ausgegeben wird. Verschiedene Verfahren bieten sich an. Hier ein Pattern, dass u.a. über die "SystemInformation.DoubleClickTime" implementiert ist.3.5ControlsDownload 01.11.200801.11.2008
Clear.htmImplementation von Clear bei einer .NET-WinForm-ControlCollectionHier wird ein Beispiel für die Framework-Implementierung der Clear()-Methode einer .NET1.1-WinForm-ControlCollection aufgeführt. Es wird deutlich, das kein Dispose stattfindet. Einige zentrale Microsoft-Referenz-Links beschreiben den Hintergrund:1.1Implementation  22.11.200522.11.2005
CollectionEdit.htmCollectionEditor ohne PropertyGrid anzeigenÜber ein PropertyGrid kann man Collection-Editoren mit einem Klick auf [...] innerhalb des PropertyGrid's anzeigen. In diesem Artikel wird gezeigt, wie man dies auch ohne PropertyGrid schafft.2.0CollectionsDownload 03.09.200703.09.2007
ColorTabControl.htmEigene Farben in TabControl-ReiternHier wird eine Beispiel-Implementierung eines TabControl mit benutzerdefinierbaren Vordergrund- und Hintergrundfarben für die einzelnen TabPages aufgeführt. Es gibt im Netz bereits viele Vorschläge. Zum Beispiel: [Dotnetrix. Mick Doherty's .net tips and tricks]. Allerdings haben alle gewisse Nachteile (wie auch die hier dargestellte Lösung).
3.5TabControlDownload 29.12.200829.12.2008
ComboTextChanged.htmComboBox Tasten-Auswahl bei Zeit-WertenDer folgende Code beschreibt eine Implementations-Möglichkeit für eine ComboBox mit Zeitwerten (06:00 - 24:00), deren Wert-Auswahl über Tasten erfolgen soll und zum Beispiel bei der Taste 9 direkt den Wert 09:00 auswählt.1.1Winform-Controls  30.06.200530.06.2005
ConcurrentReadWrite.htmGleichzeitiges Beschreiben und Lesen einer DateiIn folgendem Beispiel-Projekt wird das Verfahren des gemeinsamen Lesens und Schreibenseiner  Datei verdeutlicht. Ein umständliches Neuanlegen einer zweiten und späteres ineffizientes Rückkopieren ist so nicht nötig. Eine Voraussetzung ist, dass sich die Zeilen-Längen dabei nicht vergrössern. Die Technik geht über einen gleichzeitig geöffneten StreamReader und StreamWriter, die dann einen gemeinsamen BaseStream benutzen, dessen Position auf gewünschte Werte gesetzt werden kann.2.0I/ODownload 17.09.200617.09.2006
ContextMenuStrip.htmContextMenuStrip, ToolStripProfessionalRenderer und ProfessionalColorTableMan kann das Kontext-Menü (allgemeiner ToolStrips) unter .NET 2.0 sehr differenziert beeinflussen. Es ist nur eine korrekte Ableitung der Klassen ContextMenuStripToolStripProfessionalRenderer und ProfessionalColorTable notwendig. Hier ein Beispiel:
2.0Windows Forms  27.03.200627.03.2006
ControlInvoke.htmBearbeiten von Steuerelementen aus ThreadsMethoden, die sich auf Steuerelemente auswirken, sollten nur aus dem Thread ausgeführt werden, auf dem das Steuerelement erstellt wurde. Das .NET Framework stellt Methoden bereit, die von jedem beliebigen Thread aus ohne Sicherheitsrisiko aufgerufen werden können und die ihrerseits Methoden aufrufen, die mit Steuerelementen anderer Threads interagieren. Die Control.Invoke-Methode (bzw.Dispatcher.Invokesiehe WPF unter .NET 3.x) ermöglicht die synchrone Ausführung von Methoden für Steuerelemente. Ein paar zentrale Info-Links zum Thema und Kurz-Beispielen .NET 1.1/2.0/3.x1.1/2.0/3.xMultithreading  19.11.200506.06.2008
ConvertBase.htmZahlen in Strings verschiedener Basen umwandelnEs wird eine Klasse zur Umwandlung von Zahlen unterschiedlicher Basis in Strings und umgekehrt aufgezeigt.
Das .NET Framework 1.1/2.0 stellt mit seinen Convert-Methoden nur die Umwandlung der Basen 2, 8, 10 oder 16 zur Verfügung. Die folgenden Methoden beherrschen die (durchgängigen) Zahlen-Basen 1-36. Es ist weiterhin zu sehen, wie man eigene Exceptions implementieren kann.
1.1/2.0Konvertierung  20.01.200620.01.2006
CsResource.htmResource-Einbindung in C#.NET 2.0 - Visual Studio .NET 2005Bei Visual Studio 2005 hat sich die Ressourcen-Einbindung verbessert und kann nun streng typisiert abgerufen werden. Der Designer setzt eigene:
internal static string String2
{get{return ResourceManager.GetString("String2", resourceCulture);}}
-Eigenschaften ein, die über einen automatisch eingefügten Namespace:
Properties und einer Resources-Klasse abgerufen werden können:
MessageBox.Show(Resources.String2);/*using Ressource2005.Properties;*/
Hier ein paar Vorgehensweisen für eine zusätzlichen Sprache:
2.0RessourcenDownloadC#25.09.200522.06.2007
CurrencyEZB.htmAktuelle Währungskurse der EZB mit LINQ to XMLAktuelle Währungskurse sind über die Europäische Zentralbank (EZB) zum Beispiel alsXML-Dateidownloadbar. Hier wird gezeigt, wie man mit LINQ to XML und C# 3.0 diese Datei recht übersichtlich auslesen kann.3.5LINQDownload 20.04.200820.04.2008
CurrentItemChanged.htmWie Sub-Klassen über CurrentItemChanged informierenOO-Design, wie Subklassen bei der Datenbindung ihre Eltern-Klassen informieren können (CurrentItemChanged), damit diese (zum Beispiel) ihre Ansicht aktualisieren können. Ein typisches Mittel ist die INotifyPropertyChanged-Schnittstelle. Spart man sich diese Schnittstelle, ist ggf. ein ResetCurrentItem als Workaround möglich. 
2.0/3.5DatenbindungDownload 21.01.200821.01.2008
CustomAttributes.htmAuslesen und Definieren benutzerdefinierter AttributeSiehe auch: [Verfassen von benutzerdefinierten Attributen], [Attribute.GetCustomAttributes-Methode]1.1,2.0Implementation  24.05.200624.05.2006
CustomDgvHeader.htmBenutzerdefinierter DataGridView ColumnHeaderIn diesem Artikel wird eine Technik vorgestellt, wie man benutzerdefinierte Spaltenüberschriften beim DataGridView erreicht. Hier sind es Gruppierungs-Label, wie im Bild zu sehen. Die Gruppierungs-Label bewegen sich bei Scroll-Aktionen mit:2.0DataGridView  10.11.200710.11.2007
DataAccess.htmDatenzugriffs-Links für .NET Links für den Datenzugriff: Team Blogs, MSDN-Seiten, Newsgroups1.1-3.5Daten Zugriff  01.04.200610.01.2010
DataGridButton.htmEinfügen von Buttons in einer DataGrid-KopfzeileHier wird ein Beispiel für das Einfügen eines Buttons in eine DataGrid-Kopfzeile gegeben. Dies wird in der Essenz darüber erreicht, dass man der Controls-Auflistung eines eigenen abgeleiteten DataGrid's mittels "this.Controls.Add(button1)" das gewünschte Control zufügt:
1.1DataGrid  21.06.200521.06.2005
DatagridException.htm"Verschluckte" Exceptions beim DataGridDas DataGrid kann in einigen Situationen Ausnahmen "verschlucken". Das bedeutet, dass der Programmierer nicht die Möglichkeit hat, diese durch einen lokalen oder globalen Exception-Handler abzufangen. Die Lösung ist ein statischer BusinessObject Event, der dann für alle Business-Objekte zur Verfügung steht. Hier ein Beispiel:
1.1DataGrid  23.09.200523.09.2005
DataGridIP.htmBenutzerdefinitiertes Sortieren beim DataGrid in C#Beispiel-IP-Sortierung einer DataGrid-Spalte durch Klick auf den ColumnHeader.
Da es wenig Beispiele gibt, wie man die ApplySort-Methode der IBindingList benutzten kann,
hier ein Beispiel.
1.1DataGridDownload 01.08.200501.08.2005
DataGridViewBeispiel.htmBeispiel-Tabelle für das DataGridViewKleines Beispiel des Füllens eines DataGridViews durch Erstellung eines eigenen DataTables. Bool-Typen werden automatisch durch Checkboxen dargestellt. Das DefaultCellStyle.Format "dd.MMMM yyyy" formatiert die Datums-Spalte wie gewünscht.
Ein weiteres Beispiel eines ungebundenen DataGridViews wirdhierdargestellt. Es zeigt die ToString()-Überschreibung einer Klasse, die somit in der DataGridView-Zelle angezeigt wird. Weiterhin wird deutlich, wie man über Casting auf Member des dahinterliegenden Typs zugreifen kann.
2.0DataGridView  26.03.200611.11.2006
DataGridViewDragDrop.htmDataGridView Drag DropMit dem DataGridView ist es kein grosser Aufwand ein Drag & Drop zu implementieren. Der Quellcode wurde anfangs z.T. dem "DataGridView FAQ" entnommen, der eine gute Quelle auch für andere Probleme darstellt. Im Download-Projekt habe ich den Code jedoch noch abgewandelt, um auch das Drag & Drop für die letzte Zeile zu ermöglichen.2.0DataGridViewDownload 08.06.200607.09.2008
DataGridViewLinkColumn.htmDataGridViewLinkColumnHyperlinks im DataGridView funktional einbinden mit der DataGridViewLinkColumn. Das ist noch recht selten Online zu finden. Hier eine Beispiel-Implementation.2.0DataGridViewDownload 08.08.200613.08.2006
DataGridViewSort.htmGleicher Zeilen-Inhalt nach Sortieren beim DataGridViewDas DataGridView setzt die Binding-Position nach einem Klick auf den ColumnHeader unter .NET 1.1/2.0 nicht um, wenn das DataGridView etwa an DataTable gebunden ist (gebundenes Szenario). In ungebundenen Szenarien funktioniert bereits ein einfaches Setzen vonFirstDisplayedScrollingRowIndexauf den RowIndex der gewünschten Zelle. Das bedeutet, dass der Inhalt der aktuellen Position nach dem (Sortier-) Klick anders ist. Um den gleichen Inhalt zu ermöglichen ist folgender Beispiel-Code eine Variante:2.0DataGridView  11.02.200601.06.2008
DataSetXml.htmDataSet mit eigenen Schema-String im Code neu erzeugenMit dem StringReader und der DataSet.ReadXml() Methode kann man sehr einfach auch ein komplettes DataSet nur durch Strings erzeugen. Hier ein Code-Beispiel:1.1DataSet C#22.10.200522.10.2005
DgvButtonColumn.htmDataGridView-Zelle mit Browse-ButtonHier wird eine Bearbeitungsmöglichkeit für das DataGridView vorgestellt, bei der eine benutzerdefinierte Aktion nach Druck auf einen Button ausgeführt wird. Der Button erscheint nur bei Klick auf die DataGridView-Zelle und nur, wenn es die Link-Spalte ist:2.0DataGridViewDownload 09.08.200609.08.2006
DgvFooter.htmDataGridView mit FußzeileEin DataGridView mit Fußzeile, die automatisch int-Spalten aufsummiert, als anpassbares UserControl. Die Fußzeile verschiebt sich, wenn die horizontale ScrollBar des DataGridViews betätigt wird. Auch Rezise-Aktionen werden berücksichtigt.2.0C# SpracheDownload 24.02.200831.05.2009
DgvPainting.htmEin Grid selber zeichnenWill man einfach nur ein Grid mit einem Linien-Raster haben, diese Linien auch noch zur Laufzeit verschieben können und bequem in die Zellen etwas hineinmalen, so kann man dies durchaus einfach und höchst flexibel und erweiterbar mit dem DataGridView erledigen. Eigene UserControls oder schwierige OOP-Verfahren sind da gar nicht nötig. Erreichen tut man dies, indem man einfach Funktionalität über den Code herausnimmt und das CellPainting-Ereignis behandelt.2.0DataGridViewDownload 03.06.200703.06.2007
DgvVirtual.htmNutzung grosser Datenmengen beim DataGridViewDie VirtualMode-Eigenschaft desDataGridViews ist neu im .NET Framework 2.0. Hier ein etwas vereinfachtes Beispiel, um 200.000 Datensätze im DataGridView anzuzeigen. Es wird nur ein Ereignis behandelt: DataGridView.CellValueNeeded. Das Füllen der 200.000 Daten-Templates ins Grid dauert nur etwa 200 Millisekunden.2.0DataGridViewDownload 09.04.200623.06.2009
DictionaryConstraint.htmDictionary generisch einschränkenBei einem generischen Dictionary mit einfachem TKey-Typ erscheint beim Hinzufügen gleicher "Keys" eine (gewünschte) Fehlermeldung. Will man, dass der Versuch eines Zufügens eines gleichen Key's zu einer Exception führen soll, so kann man die Implementation in diesem Artikel (ganz unten) benutzen. Nebenbei wird eine Methode aufgezeigt, wie man lokalisierte Fehlermeldungen des Frameworks benutzen kann und Wertgleichheit generisch implementieren kann.3.5GenericaDownload 05.10.200805.10.2008
DockRightVertical.htmForms untereinander platzieren mit .NET 1.1Was unter .NET 2.0 leicht mit demTableLayoutPanel oderFlowLayoutPanel von der Hand geht, muss in .NET 1.1 noch teilweise mit eigenem Resizing-Code implementiert werden, trotz Anchor- und Dock-Eigenschaften.
Hier ein Beispiel mit prozentual gleicher Höhe und vertikal untereinander stehenden Formen.
1.1Windows Forms  06.01.200606.01.2006
DoublePattern.htmDoppelte Zeilen in neues DataGridView übertragenDoppelte Zeilen (mit gleichen Werten in einer auszuwählenden Spalte) werden im Code-Beispiel generisch in ein zweites DataGridView übertragen. Ein kleine Arbeitserleichterung für ähnliche Aufgaben. Das Fenster wird im Beispiel über Windows Vista dargestellt.2.0ImplementationDownload 28.01.200728.01.2007
DPAPI.htmDPAPI unter C#DPAPI  ist eine Windows-spezifische Verschlüsselungs-API. Während .NET 2.0 diese schon über einfache managed Wrapper bereitstellt, muss sie unter .NET 1.1 noch durch eigenes P/Invoke gebildet werden. Hier ein Demo-Download mit einer DPAPI-Library.1.1(2.0)VerschlüsselungDownload 11.02.200620.05.2006
DragDropTreeView.htmDrag & Drop TreeViewHier wird eine mögliche Implementierung gezeigt, wie Drag und Drop zwischen zwei TreeViews ermöglicht wird.
2.0Drag & DropDownload 03.08.200803.08.2008
DynamicCreate.htmDynamisches Erzeugen von Controls per Reflection und XMLDieses Beispiel zeigt, wie Controls dynamisch über XML-Definitionen aus einer Datei zur Laufzeit in eine Form eingebunden werden. Normal werden nur Eigenschaften der Controls über Reflection gesetzt, für die Ausführung einer Methode wurde beispielhaft eine fest codierte Pseudo-Eigenschaft "Loop" implementiert.
2.0ReflectionDownload 08.04.200722.04.2007
EntityUpdate.htmEntity Update in verteilten Szenarien - Linq to EntitiesIn verteilten Szenarien ist ein Update eines Entities (ADO.NET Entity Framework) nicht komplett trivial. Es gibt zwei Haupt-Techniken: 
Technik 1: Übergabe eines geklonten Original-Objektes.
Technik 2: Das Original innerhalb der Update-Methode über einen (zusätzlichen) RoundTrip vom Server holen. 
                   Siehe dazu: [How to:Apply Changes Made to a Detached Object]
3.5 SP1 Beta1LINQ to EntitiesDownload 10.05.200810.05.2008
EnumLocalize.htmEnum lokalisierenEs gibt viele Szenarien, für die eine Lokalisierung vonEnum-Namen sinnvoll und möglich sind. In diesem Beispiel werden die typsicheren Ressourcen des Visual Studio Designers benutzt, um dann später mit dem ResourceManager (GetString) darauf zuzugreifen.3.5LokalisierungDownload 25.10.200825.10.2008
Enums.htmEnums unter C#[Dieser Artikel dient relevanter Code & Informations-Sammlung bzgl. Enums]
- Test-Version completionlist-Hack in C#.
- U.a. Ralf Wesphal's generische "Set"-Klasse. John Skeet's "Enhanced Enums in C#".
- Java 5.0 Enum's: In früheren Versionen von Java war ein Enum wie in C/C++/C# letztlich nur ein int. Genauer, es gab keine Enums! Dies wurde in Java 5.0 geändert. Doch sie haben hier eine weitergehende Semantik, als in .NET.
2.0Implementation  21.01.200617.02.2006
EventLogLesen.htmEventLog auslesenEin einfaches Beispiel, wie man das Lesen aus einem beliebigen EventLog mit einem BindingNavigator nebst BindingSource kombinieren kann. Die Werte eines EventLogEntryswerden als SelectedObject in einem PropertyGrid angezeigt.
2.0Windows FormsDownload 20.05.200620.05.2006
FadeIn.htmControl in WinForm einblendenMan kann ein Control (oder mehrere) in eine Windows Form langsam einblenden, indem man eine überdeckende Form mit einer sich über Timer ändernden Opacity-Eigenschaft anzeigt. Dies ist eine Möglichkeit von mehreren.
1.1/2.0Windows FormsDownload 02.04.200602.04.2006
FileToClipboard.htmDateiname vom Explorer-Kontextmenü ins Clipboard setzenAufgabe: Aus dem Explorer heraus den kompletten Dateinamen über Kontext-Menü ins Clipboard setzen.
Hier wird gezeigt, dass dies mit einer kleinen reg-Datei und einen Zusatzprogramm - hier in C# - leicht möglich ist.
2.0Sonstiges  22.03.200622.03.2006
FilterPropertyGrid.htmPropertyGrid zur Laufzeit mit dem TypeConverter beeinflussenMan kann Attribute beim PropertyGrid zur Laufzeit (quasi) beeinflussen, wenn man die Klasse, deren Objekt auf das SelectedObject festgelegt wurde, mit einem TypeConverter-Attribut versieht.
2.0PropertyGridDownload 19.05.200719.05.2007
FontInstall.htmFont Installation und Abfrage unter .NETDieses Codebeispiel zeigt eine Möglichkeit auf, einen eigenen Font zu installieren oder abzurufen. In diesem Fall "aerosol.ttf". Die zentralen Bausteine dabei sind die PrivateFontCollectionund die InstalledFontCollection:2.0FontsDownload 23.12.200523.12.2005
ForAndForeach.htmDie for- und foreach-Anweisung im VergleichDie Performance von foreach im Gegensatz zu der for-Anweisung ist teilweise unterschiedlich, teilweise fast identisch, abhängig von mehreren Faktoren. Hier werden einige Szenarien, Bedingungen und Ergebnisse aufgelistet.2.0ImplementationDownload2 28.01.200601.02.2006
FormatProvider.htmFormatierung von Einträgen im DataGridViewWenn die Format-Eigenschaft des DefaultCellStyle nicht mehr ausreicht, kann der FormatProvider(zusätzlich) benutzt werden, um die Darstellung innerhalb der DataGridView-Zellen benutzerdefiniert zu variieren. Die in .NET 2.0 neue DataGridViewCellStyle.FormatProvider-Eigenschaft ruft das Objekt für die Bereitstellung der kulturspezifischen Formatierung der DataGridView-Zellenwerte ab, oder legt dieses Objekt fest.2.0DataGridView  15.11.200503.02.2006
FSnapView.htmSolve package errors in VS2005 help windowThis is an application, that puts the results of fsnap in a DataGrid, so sorting is enabled.
By the way - one can use this app for other automation of program-outputs, or simply learn how to redirect program output, while letting the GUI be responsive.
1.1TroubleshootingDownload (Sources) 16.02.200604.04.2006
FtpUpload.htmFTP Upload mit Byte- und ProgressBar-AnzeigeHier wird ein Code-Beispiel vorgestellt, das eine Datei asynchron auf einen FTP-Server uploaded, mit zusätzlicher Ausgabe der Bytes, die hochgeladen wurden. Es ist ein leicht erweitertes MSDN-Beispiel. Aufzurufen ist die "staticvoidUpload()" Methode mit einer Label-Instanz, in der die Bytes dargestellt werden sollen. 
2.0FTPDownload 13.04.200707.08.2008
FullTrust.htmFull Trust für Assemblies per SourcecodeDieser Artikel beschreibt, wie man mit Hilfe seines eigenen Sourcecodes erreichen kann, dass seine Anwendung dank zugeordneter Codegruppe mit „Full Trust“ ablaufen kann. Ein geringfügiger Nachteil liegt auf der Hand: Dieser Sourcecode muss selber zur Ausführung der Anweisungen berechtigt sein.1.1SicherheitDownload 19.04.200619.04.2006
GC.htmGarbage CollectorSelbst bei managed Klassen die managed Member enthalten, die IDisposable implementieren:
Der Garbage Collector führt die Freigabe des Objektes automatisch aus.
Durch Entwurfs-Pattern kann sichergestellt werden, dass dabei ein beliebiger Freigabe-Code aufgerufen wird.
2.0ImplementationDownload 02.08.200608.03.2007
GenericLists.htmGenerische Listen sortierenUnter .NET 2.0 gibt es als neues Feature die Generics. Wegen der besseren Performanz, und besseren Wartbarkeit und Typsicherheit sind sie in vielen Fällen den klassischen ArrayList'en oder von CollectionBase abgeleiteten Listen (.NET 1.1) vorzuziehen.2.0Generics  03.11.200527.05.2007
GetWindowText.htmGetWindowText bei externen ProzessenEs soll Leute geben, die denken, GetWindowsText liefert keine oder falsche Ergebnisse bei externen Prozessen. Der Artikel zeigt, dass GetWindowText durchaus dafür eingesetzt werden kann.3.5C# SpracheDownload 10.10.200910.10.2009
IsVisualStylesEnabled.htmSind VisualStyles aktiviert? Unter .NET 2.0 schon einfach mit Application.RenderWithVisualStyles abfragbar, so fehlt eine solche Methode unter .NET 1.1: "IsVisualStylesEnabled". Hier eine mögliche Implementation über Windows-API. Der Code wurde unter Zuhilfenahme mehrerer Internet-Artikel erstellt.1.1/2.0Implementation  28.01.200628.08.2007
KeyEventUserControl.htmKeyEvents aus UserControlsHier wird ein Beispiel gezeigt, wie Tastatur-Events von mehreren UserControl's über die Form global behandelt werden können. Sowohl der Click mit der Maus, als auch der Tastendruck [Keys.Up, Down, Left, Right] führen zum gleichen Code-Handling. Bei MenuItem's ginge dies einfacher über die Shortcut-Eigenschaft.
2.0UserControlsDownload 16.09.200616.09.2006
Komponente.htmKomponenten einbinden und benutzenHier wird ein Beispiel für die Einbindung und Benutzung von Methoden, Events und Schnittstellen einer Komponente (von Component abgeleitet) gegeben. Komponenten - wie z.B. ein OpenFileDiaog - werden beim Hereinziehen aus der ToolBox einer WindowsForms-Anwendung nur im unteren Teil der Form dargestellt und sind zur Laufzeit nicht direkt sichtbar.2.0ImplementationDownload 24.03.200725.03.2007
Konstruktoren.htmlKonstruktoren unter C#Konstruktoren und Destruktoren werden nicht vererbt.
Allerdings bedürfen sowohl die Basis- als auch die abgeleiteten Komponenten eines Objektes der Initialisierung.
Die Basis-Komponente eines Objektes ist für die Initialisierung der Basis-Member verantwortlich,
während abgeleitete Komponente für die Initialisierung der abgeleiteten Member zuständig ist.
Konstruktoren der Basis- und abgeleiteten Komponenten werden aus diesem Grund aufgerufen.
1.1/2.0Implementation  09.03.200609.03.2006
LastLogonUser.htmLastLogon des Benutzers feststellenEs gibt mehrere Methoden, die Zeit des letzten Logons eines Users festzustellen. Während Verfahren über DirectoryEntry langsam sind, kann man über die NetUserGetInfo API ein performanteres Verhalten erreihen. Allerdings funktioniert das Verfahren mit DirectoryEntry über LDAP auch mit Active Directory.2.0C# SpracheDownload 21.07.200821.07.2008
LatebindWord.htmSpäte Bindung bei C# am Beispiel WordVersions-unabhängige Programmierung in Office
Unschön ist bei normaler C#-Programmierung, dass bei Befehlen wie Documents.Open(...) sehr viele Parameter als Missing.Value angegeben werden müssen. Das muss nicht sein. Man kann sich einen Wrapper bauen, der auf Basis des BindingFlags.OptionalParamBinding alle Methoden generisch mit den nur notwendigen Parametern aufruft.Auch ist man so geschützt vor dem Umstand, die Methoden in den unterschiedlichen Office-Versionen mit anderen Signaturen aufrufen zu müssen.
1.1Latebinding  14.03.200525.01.2006
LinkTitle.htmLink mit Titel in die ZwischenablageDie Lebensdauer von Links, die zum Beispiel in Newsgroups gepostet werden, wird immer geringer. Wäre einTitelmit dem Link zusätzlich angegeben, so wäre ein späteres Wiederfinden ggf. toter Links deutlich einfacher, denn dann kann über Suchmaschinen der neue Link oft wiedergefunden werden. Hier eine Möglichkeit über erweiterte Internet Explorer Kontext-Menüs für beliebige Webseiten sowohl den Titel, als auch die URL in die Zwischenablage zu sichern.2.0JavaScriptdownloaden 22.09.200715.04.2009
LINQ Samples.htmLINQ SamplesDie hier aufgeführten LINQ Beispiele sind nach einem Download von "C# LINQ and language samples for Visual Studio 2008" erreichbar.
Der Inhalt dieses Artikels ist nur eine Kopie der Readme.htm aus dem Ordner, wo sie die LINQ-Samples hinkopiert haben, um einen Überblick zu bekommen, welche Beispiele überhaupt vorhanden(installiert werden) sind. 
3.5C# Sprache  23.12.200723.12.2007
LINQ.htmLINQLINQ ist ein Akronym für ".NETLanguageINtegratedQuery" und beinhaltet sprach-integrierte Abfrage-, Mengen- und Transformations-Operationen. In diesem Artikel werden Standard-Links für Referenz und Beispiele bzgl. LINQ aufgeführt.3.5C# Sprache  23.12.200725.02.2010
List_T_Beispiel.htmList<T> Beispiel für C#Beipiel für die Benutzung generischer Listen mit generischen Methoden.
Weitere Artikel dazu:Generische Listen sortieren.
2.0Generics  21.03.200621.03.2006
LocalizeRuntime.htmLokalisierung zur LaufzeitEs wird eine Möglichkeit gezeigt, wie man eine Windows Form zur Laufzeit lokalisiert darstellen kann und die Sprache umschalten kann.(1.1)/2.0, [Download]Windows FormsDownload 28.03.200620.05.2008
LogonUser.htmCode mit anderen Rechten ausführenCode wird standardmässig mit den Rechten ausgeführt, die der aktuelle Prozess hat. Das ist im Normalfall dann auch der angemeldete Benutzer. Will man temporär Code mit anderen Rechten ausführen, kann man die API LogonUser, WindowsIdentity.Impersonate nutzen.
3.5ImplementationDownload 18.04.200610.01.2009
MasterDetail.htmMaster/Detail mit DataSet-DesignerEine recht einfache Methode zur typsicheren Datenbindung mit Master/Detail-Tabelle:
Man erstellt mit dem Designer ein DataSet mit zwei Tabellen und zieht mit der Maus von der Master-Tabelle[Spalte IDMT] auf die Detail-Tabelle. So ergibt sich automatisch eine Beziehung (hier zwischen den Schlüssel- und Fremdschlüsselspalten IDTM). Man kann die Master- und die ausgeklappte Detail-Tabelle nun einfach in die Form ziehen. Der Speichern-Button muss ggf. noch enabled werden. Das Laden und Speichern wird hier über eine XML-Datei erledigt.
2.0DatenbindingDownload 02.07.200609.03.2010
MsChart.htmMicrosoft Chart ControlInstallations-Details und Download-Adressen zu den neuen .NET Chart-Controls von Microsoft. Die "Microsoft Chart Controls für .NET" ermöglichen eine anspruchsvolle Daten-Visualisierung für Entwickler. Durch Benutzung dieser Chart-Steuerelemente kann man ASP.NET oder Windows-Forms-Applikationen mit einfachen, intuitiven und visuell sehr ansprechenden Diagrammen für komplexe statistische oder finanzielle Analyse erstellen. Die Steuerelemente sind explizit für Microsoft Visual Studio 2008 designed.3.5 SP1Controls  26.10.200826.10.2008
MshtmlParser.htmMSHTML ohne WebBrowser als Parser benutzenEs wird gezeigt, wie man ohne WebBrowser-Control die MSHTML-Bibliothek zum Parsen einer HTML-Datei (oder URL) benutzen kann. Hier wird einmal die Text-Darstellung ausgegeben und einmal nur die Links. Es sind aber etliche andere Dinge machbar, da die MSHTML-Bibliothek hier über COM eine Fülle an Funktionen bereitstellt.
2.0ImplementationDownload 13.08.200613.08.2006
MshtmlTab.htmEigenes HTML im WebBrowser einfügenDer Artikel beschreibt das Einfügen von eigenem HTML (hier ein Table) in ein über die COM Registerkarte unter Visual Studio hereingezogenes WebBrowser-Control. Die Library "Microsoft.mshtml" (.NET-Registerkarte) ermöglicht dynamischen Aktionen über das Object-DOM. 
1.1WebBrowserDownload 21.04.200621.04.2006
MultiLineDataGrid.htmMultiline DataGridDas DataGrid stellt normalerweise nur bei Klick eine Zelle umgebrochen dar.
Wie das zu ändern ist und gleichzeitig dynamisch berechnete Zeilen-Höhen erreichbar sind, zeigt die nachstehende Lösung. Zusammen mit dem Projekt DataGridBrowser [SyncFusion] kann man sich ein kleines Test-Projekt zusammen bauen.
1.1ImplementationDownload 16.06.200516.06.2005
MVVM.htmMVVM - Das Model View ViewModel - MusterIn diesem Artikel werden Links zum MVVM-Pattern und nutzenden Technolgien, insbesondere oft WPF, Silverlight, Composite Applications, und RIA Services aufgeführt. Das MVVM-Pattern kann auch als Mittel zum Schreiben von hybriden [Windows Forms / WPF / Silverlight] UI's unabhängig mit nur einer Code-Basis benutzt werden. Es ist von der Basis her das "Presentation Model" Pattern von Martin Fowler. 3.5Architektur  29.12.200901.03.2010
N_M_DataGridView.htmN:M Beziehungen über DataGridViews anzeigenDieser Artikel erläutert zwei Möglichkeiten zur Visualisierung von N:M Beziehungen mit dem DataGridView. Es wird eine Technik über eine Zwischentabelle mit zwei 1:N Beziehungen erläutert. Zum einen wird eine Möglichkeit über LINQ-Joins dargestellt, zum anderen über die Filter-Eigenschaft des BindingSource.
-Handling 1(über LINQ Query)
3.5DataGridViewDownload 26.04.200926.04.2009
NamedPipes.htmNamed Pipes unter .NETIm System.IO.Pipes Namespace gibt es unter anderem die .NET Klassen: NamedPipeServerStream und NamedPipeClientStream. Hier ein kleines Windows Forms Beispiel, wie man eine einfache Kommunikation aufbauen kann:3.5KommunikationDownload 06.02.200806.02.2008
NetVersionen.htm        
NetVersions.htmDetermine the Servicepack of .NET FrameworkThe safe method to determine which Servicepack on which .NET Runtime is installed is - looking to the file version of one of the core assemblies inside the installed framework-folder. While there is no real tool for that at moment, users made their own. For example see :DotNet VersionCheck Utility, or Aron Astebners setup verification tool, where you do not have an overview and must manually check all frameworks and must agree with license, but proof against a bunch of files. 
Here is one possibility from my side, where you have a solid overwiew of all .NET versions.:
1-4VersionenDownload 24.03.200530.01.2010
ObjektScope.htmLokaler Objekt-Scope unter .NET am Beispiel StreamWriterLokal definierte Variablen werden unter .NET automatisch freigegeben.
[MSDN:Automatische Speicherverwaltung]
Aber Achtung. Die CLR kann die Objekte (zugeordneten Speicher der Variaben) "einige Zeit" festhalten.
Das heisst intern, dass das Objekt nur "zur Zerstörung freigegeben" ist, aber dieses noch nicht ausgeführt wurde. Deswegen können unten beschriebene Effekte entstehen:
1.1/2.0Implementation  26.11.200502.03.2006
OpenFileThumbnail.htmOpenFileDialog in beliebiger Ansicht öffnenDie Ansicht des OpenFileDialog's von .NET ist nicht direkt über verwaltetete .NET-Methoden beeinflussbar. Eine Möglichkeit ist, spezielle bekannte Klassennamen der Windows-Dialog-Fenster mit PInvoke zu erkennen und diesen eine spezielle Meldung zu senden. Dieses Wissen ist durch Tools wie Spy++ aus den Visual Studio Tools-Menü herauszufinden. Getestet unter XP und Vista.
2.0Shell InteraktionDownload 23.01.200723.01.2007
OutlookTermine.htmOutlook Termine exportierenHier wird beschrieben, wie man Outlook Termine über Automation in einen DataTable füllt, um die Daten dann in einem DataGridView anzuzeigen.2.0OfficeDownload 19.02.200619.02.2006
OwnEventArgs.htmEigene EventArgsBeispiel für die Verwendung von EventArgs-Eigenschaften wie "Cancel" in eigenen Klassen.2.0ImplementationDownload 16.07.200616.07.2006
PerfCount.htmBeispiel für eigene PerformanceCounterLeistungsindikatoren (PerformanceCounter) sind eine geeignete Art um Messungen vielerlei Art anderen Anwendungen zugänglich zu machen. Windows selber bietet über das Tool Perfmon eine anpassbare flexible Monitoring-Anwendung, mit der nicht nur vordefinierte, sondern auch eigene Leistungsindikatoren darstellbar sind.
2.0ImplementationDownload 17.12.200617.12.2006
PlugIn.htmPlugIn über InterfaceBeispiel für ein simples PlugIn über eine Schnittstelle mit Auslösung eines Events.2.0ImplementationDownload 21.04.200721.04.2007
Pop3Client.htmPOP3ClientEine kleine Library zum Zugriff auf POP3. Andere Links:
A POP3 Client in C# .NET
Retrieve Mail From a POP3 Server Using C#
Google-Suche: POP3 C#
1.1POP3Download 01.03.200628.06.2006
PositionGroesseSichern.htmPosition und Größe von Forms sichernSie können die Position und die Größe Ihrer Form recht einfach sichern, indem Sie die Bounds- und die RestoreBounds-Eigenschaft der Form zusammen mit demMinimized-Zustand des Fensters berücksichtigen. Im minimierten Zustand geht man über die RestoreBounds, im normalen über die Bounds.2.0Windows FormsDownload 18.12.200715.05.2009
PropertyGridCategorySort.htmKategorien eines PropertyGrid's sortierenWährend es unter .NET 1.1 noch den Trick der Benennung mit "\tErsteKategorie" und "\t\tZweiteKategorie" gab, ist Visual Studio 2005 diesbzgl. genauer geworden und zeigt diese Zeichen nun an, was den Trick ins Leere laufen lässt.
Eine kleine Korrektur-Methode kann den Umstand (für VS 2005) wieder rückführen.
(Der Code ist noch rudimentär, erfüllt aber schon seine Funktion).
1.1/2.0PropertyGrid  03.06.200505.12.2005
PropertyGridConnectionString.htmPropertyGrid ConnectionString EditorDas PropertyGrid in Windows Forms ist sehr flexibel, aber aus Rechte-Gründen ist die Eingabe eines ConnectionString in Einstellungen normal nicht möglich (im Application Scope). Hier wird ein Weg über die typsicheren Settings gezeigt, in denen ein Windows-ConnectionString-Editor eingeblendet wird, wenn im PropertyGrid der Button zum Editieren der DB-Verbindungszeichenkette geklickt wird.2.0, 3.5PropertyGridDownload 13.05.200915.05.2009
PropertyGridReadOnly.htmDynamische "Attribut-Änderung" beim PropertyGridHier wird eine abgeleitete TextBox FdPropTest an das SelectableObject eines PropertyGrids gebunden. Wenn nun zur Laufzeit die Eigenschaft Vorname geändert wird, bekommt diese das Attribut ReadOnly und eine andere Description. Der Beispiel-Code ist noch rudimentär, erfüllt aber schon seine Funktion.
1.1PropertyGrid  25.10.200525.10.2005
ReflectionEvents.htmMögliche Objekt-Events durchlaufen am Beispiel DataGridNicht nur Properties, Felder und Methoden sind über System.Reflection einsehbar, auch alle Events können sichtbar gemacht werden. Die Methode Type.GetEvents ist der Schlüssel dazu im folgenden kleinen Codebeispiel:1.1Datagrid, Reflection  24.05.200524.05.2005
RsaPrivatePublic.htmVerschlüsselung mit öffentlichem SchlüsselErläuterung eines Beispiel-Szenarios von asymmetrischer Verschlüsselung mit Hilfe des RSACryptoServiceProvider's unter Nutzung eines privaten und eines öffentlichen Schlüssels.
2.0KryptografieDownload 05.05.200705.05.2007
RunderText.htmRunder TextFür das Zeichnen von "rundem Text" gibt es schon ein paar Implementations-Ansätze im Internet. Zum Beispiel: "Customized Text - Orientated Controls in C# - Part I (Label Control)".2.0ImplementationDownload 18.07.200618.07.2006
ScrollListView.htmListView mit Scroll-EventsEinige Windows.Forms-Controls haben keine Scroll-Ereignisse unter .NET.
Man kann diese aber nachrüsten, indem man zunächst das normale Control (hier ListView) nutzt. Dann können die Vorkommen von "System.Windows.Forms.ListView" durch "ScrollListView" ersetzt werden. Schliesslich können die Events "HScrollChanged" / "VScrollChanged" ganz normal über das Eigenschaften-Fenster benutzt werden.
1.1ListViewDownload 12.01.200617.03.2006
Security.htmSecurityException bei Zugriff über LANVielfach möchte man unter dem .NET Framework eine Exe (Assembly) über das Netzwerk aufrufen. Dies ist aber standardmässig gesperrt, erst ab dem .NET Framework 3.5 SP1 wird einer Assembly wieder FullTrust gegeben, wenn sie über eine Netzwerkfreigabe aufgerufen wird. Hier die verschiedenen Möglichkeiten, dies zu ermöglichen:1.1/2.0Sicherheit  16.11.200519.07.2008
SerializeControls.htmControls automatisch serialisierenControls sind standardmässig nicht serialisierbar. Wie man Einstellungen von Controls dennoch automatisch persistieren kann, zeigt dieser Artikel in einem pragmatischen Ansatz, der nur öffentliche Wertetypen serialisiert. Die Serialisierung wird über denTypeDescriptormit einer invarianten Kultur überIXmlSerializableimplementiert. Achtung, es gibt weitere Dinge zu berücksichtigen, dies ist nur ein Ansatz. Ein Vorteil ist, dass hier dietypsicheren"Properties.Settings" benutzt werden, sodass die Persistierung gleich ins richtige Benutzer-Verzeichnis kommt.2.0SerialisierungDownload 22.03.200822.03.2008
SettingsExample2.htmTypsichere Settings mit eigenen Array-TypenTypsichere Settings (Einstellungen) sind unter .NET 2.0 ein neues Feature, dass sogar eigene Klassen über Designer einbindbar macht. Hier ein Beispiel einer Liste von Instanzen eines eigenen Datentyps "Daten".
2.0ImplementationDownload2 27.12.200603.07.2008
ShellProperties.htmShell Properties als ÜbersichtWindows Desktop Search SQL Links. Eine Übersicht.*Vista  01.08.200701.08.2007
ShGetFileInfo.htmPInvoke und Interop-Code am Beispiel ShGetFileInfoDer folgende Code stellt Kommunikations-Möglichkeiten zwischen .NET-C# und der Windows API beispielhaft anhand der SHGetFileInfo-Funktion, SHFILEINFO-struct und dem Enum SHGFI dar. Die Funktion wurde auf XP/Prof und Windows98 getestet. Relevante Interop-Links werden aufgeführt.
1.1Interop  24.05.200524.05.2005
ShowDialog.htmImplementation von ShowDialog unter .NET 1.1Der folgende Code ist komplett von Lutz Roeders Reflector erstellt worden.
Er spiegelt die Framework-Implementation folgender Methode wieder:
System.Windows.Forms.Form.ShowDialog().
1.1Windows Forms  16.08.200516.08.2005
ShowViewColumn.htmSchema Informationen aus Datenbanken ermittelnDer Artikel stellt Möglichkeiten der Extraktion von Schemainformationen wie Feldlänge, FeldTyp, etc. einer speziellen Spalte einer angegebenen Tabelle dar. Benutzt wird die OleDbConnection.GetSchema-Methode und die Microsoft-Referenz zu den Schemaauflistungen.
2.0DatenbankDownload 21.07.200722.07.2007
TcpClientServer.htmClient-Server Kommunikation mit dem TcpClient und TcpListenerEin einfaches Beispiel einer synchronen Socket-Kommunikation mit TcpClient und TcpListener. Dabei wird in den angehängten Downloads unter anderem auch deutlich, dass synchrone Sockets nicht das User Interface blockieren müssen, wenn man die Methoden in Threads ausführt.2.0/3.5Client-ServerDownload 25.07.200810.05.2009
ThreadLogic.htmThreads in WinForms über Logik synchronisierenHier wird ein Beispiel gegeben, wie Threads über Logik (hier boolesche Variablen) synchronisiert werden und selbsttätig auslaufen.
Speziell im Windows Forms Bereich sollte nach dem Start von Threads zeitnah die aufrufende Methode beendet werden, damit die MessageLoop die Applikation reagierend halten kann. Hier werden zwei "long running" Threads gestartet und ein Event (AllCompleted) ausgelöst, wenn beide Threads fertig sind.
1.1ThreadingDownload 05.04.200605.04.2006
Timer.htmTimerTimer-Klassen gibt es mehrere im .NET Framework. Hier ein paar Hintergründe und Verhaltensweisen, die speziell die Überlappungsszenarien darstellen, wenn der Timer-Handler noch nicht fertig ist, aber bereits ein neues Elapsed-Ereignis ansteht. Als erstes der Systems.Timers.Timer2.0, 3.5SteuerklassenDownload 01.12.200801.12.2008
ToolStripMerge.htmMerging von ToolStripItem'sMerging (Kombinieren/Mischen) von ToolStripItem's innerhalb eines ToolStripPanel's ist von .NET 2.0 nur für Menü-Typen wie [MenuStrip, ToolStripDropDownMenu, ToolStripMenuItem] vorgesehen. Das Beispiel demonstriert die Möglichkeit in einem ToolStripPanel im MDI-Szenario verschiedene ToolStripItem's (hier ToolStripButton's) zuzufügen, bzw. zu entfernen, je nachdem, ob dieser schon vorhanden ist. 2.0Windows FormsDownload 25.01.200625.01.2006
TwoLineBinding.htmAutomatisches Nummerieren von Steuerelement-Array'sWill man Steuerelemente automatisch nummerieren, so kann man dies über ihren Namen erreichen. Hier wird eine von CollectionBase abgeleitete Klasse benutzt, die in ihrer Add-Methode über ein BinarySearch(tbx,textBoxComparer) ein  Insert(index,tbx) aufgerufen wird. Der textBoxComparer vergleicht die TextBoxen anhand der Zahl in den Steuerelement-Namen durch ein einfaches Regex. In diesem Beispiel werden die Werte aus einer Access-DB geholt und nach Änderung in diese zurück gespeichert. 
1.1, [Download]Windows FormsDownload 10.12.200529.05.2007
TwoLineBinding2.htmSteuerelement-Array's serialisieren und DataBindingWill man Steuerelemente automatisch serialisieren, so kann man dies z.B. über ihren Namen erreichen. Hier werden die typsicherenProperties.Settingszur Serialisierung benutzt. Dabei wird eineList<TextBox>Klasse benutzt, die über IXmlSerializable in der Lage ist, die Controls mit einer vorher definierten Anzahl an Eigenschaften, in die BenutzerSettings zu serialisieren. Die Änderungen an den TextBox-Inhalten des Benutzers, werden automatisch gesichert. Dies passiert über DataBindings und BindingSource.
2.0, [Download]Windows FormsDownload 02.08.200802.08.2008
TypeConverter.htm        
TypesafeProps.htmTypsicherere Eigenschaften bei DatenbindungIn MSDN-Beispielen werden oft DataPropertyName's über String's gesetzt. Dies ist möglich, jedoch kann man das auch "typsicherer" erledigen.2.0DatenbindungDownload2 07.08.200625.08.2007
ValidationExample.htmBeispiel-Validierung mit dem ErrorProviderDer Beispiel-Code zeigt exemplarisch eine mögliche Implementierungs-Strategie für die Validierung mit dem ErrorProvider bei Windows Forms. Die this.Controls(der Form) werden rekursiv durchlaufen und allen TextBox'en dabei eine Validating-Event-Behandlung zugefügt. Diese kann dann allgemein an einer Stelle abgefragt und implementiert werden.1.1/2.0Windows FormsDownload 08.10.200511.04.2007
VbResource.htmResource-Einbindung in VB.NET 2.0 - Visual Studio .NET 2005Bei Visual Studio 2005 hat sich die Ressourcen-Einbindung verbessert und kann nun streng typisiert abgerufen werden.
Der Designer setzt eigene:FriendReadOnly Property String2() As String Eigenschaftenein, die über ein Resources-Modul abgerufen werden können. Hier ein paar Vorgehensweisen mit einer zusätzlichen Sprache:
2.0Ressourcen VB.NET25.09.200522.06.2007
VersionInfo.htmBetriebssystemerkennung mit C# .NETDieser (portierte) MSDN Quickie zeigt Ihnen, wie Sie aus C#.NET heraus ermitteln, auf welcher Windowsversion Ihre Anwendung abläuft.Das .NET Framework macht es einfach, die Versionsnummer des eingesetzten Betriebssystems zu ermitteln: Hierfür steht die Klasse OperatingSystem im Namespace System zur Verfügung. Neben der Versionsnummer selber benötigen Sie weiterhin die Information, ob ein DOS- ein oder NT-basierendes Windows eingesetzt wird - beide Informationen erhalten Sie durch Abfrage der Eigenschaften Version.Major,Version.Minor und Platform der Klasse.
1.1/2.0/3.5Versionierung  12.06.200322.08.2009
VsInstanz.htmLaufende Visual Studio Instanz filternDas Problem, dass ein GetActiveObject("VisualStudio.DTE")nur die zuerst erstellte (registrierte) Visual Studio Instanz darstellt, kann man durch eine Durchsuchung des ROT (Running Object Table), nach einer Instanz, dessen Prozess-ID am Ende des "runningObjectName" steht und dessen ProgID vorneweg steht, lösen.
2.0Implementation  04.04.200709.04.2007
WebBrowserContextMenu.htmEigenes Kontextmenü für aktives Element im WebBrowserUm ein benutzerdefiniertes Kontextmenü für den WebBrowser zu erstellen, gibt es mehrere Möglichkeiten und Szenarien.
Hier wird ein geändertes KontextMenü eine Selektion mit der rechten Maustaste ausgeführt, um das Outer- oder InnerHTML anzuzeigen. Im [Download2] ist auch das Erkennen des selektierten Textes aufgezeigt (IE: document.selection.createRange).
3.5Web, WinFormsDownload2 25.12.200925.12.2009
WindowsInstaller.htmWindowsInstaller: MSI Informationen ändern oder anzeigenUnter .NET kann man recht einfach unter Verweise COM-Biliotheken einbinden. Hier wird die "Microsoft Windows Installer Object Library" benutzt, um eine MSI-Datei nachträglich zu ändern, oder deren Werte auszulesen. Auch die Anbindung nativer "MSI.dll"-APIs ist möglich. Beachten Sie, dass es auch umfangreiche Scripte im Windows Installer SDK gibt, dies ist nur ein Beispiel, dass man diese Thema .NET C# sehr einfach und typsicher behandeln kann.

3.5SetupDownload 31.01.200931.01.2009
WM_Msg_NET.htmWM-Message-Definitionen vom .NET Framework holenWindows-Meldungen (etwa WM_CLOSE) werden unter .NET des öfteren benötigt, um besondere Verhaltensweisen in Programmen zu erreichen. Deswegen bietet es sich an, einen enum dafür anzulegen.
Anstatt diese WM_* Konstanten aus dem Plattform-SDK zu holen (NG-Posting), kann man auch .NET "beauftragen", indem man private Konstanten "anzapft". So kann man sich leicht eine schon recht ausführliche CS-Datei erzeugen. Achtung, nicht jede Message ist auch unter jedem Betriebssystem erlaubt. Der Hashtable ist übrigens notwendig, da die Konstanten in den einzelnen Assemblies teilweise doppelt definiert sind.
1.1Interop  29.10.200529.10.2005
WmNotUsed.htmListe der vom .NET Framework 1.1 nicht definierten WM_MESSAGESIn einem anderen Artikel beschreibe ich, wie man über Reflection private Konstanten des .NET Frameworks auflisten kann. Dieses ist die Ausgabe des obigen Programmes.1.1Interop  29.10.200529.10.2005
WordFieldInsert.htmEinfügen eines Feldes in Word mit C#Felder sind unter Microsoft Word® eine flexible Lösung um variable Inhalte anzuzeigen und zu synchronisieren. Eine Automation über C# bietet sich deswegen des öfteren an. Hier für Word® 2003.1.1OfficeDownload 30.10.200517.05.2005
WpfListBoxItemTreeViewItem.htmWPF ListBoxItem, TreeViewItem und Button TemplatesEs werden die Standard-Templates des WPF-ListBoxItemTreeViewItem und Button gezeigt.3.0WPF Templates  05.11.200725.05.2008
WpfObservable.htmWPF ObservableCollection und INotifyCollectionChangedDieser Artikel zeigt eine Möglichkeit in WPF, wie eine ObservableCollection<T> über eine Änderung eines seiner Elemente nach aussen hin benachrichtigen kann.
3.5WPFDownload 17.07.200817.07.2008
XmlAsCsharpClass.htmXML als C# KlasseWill man ausgehend von einer XML-Datei eine C#-Klasse benutzen/erstellen, um deren Werte ggf. einlesen oder speichern zu können, so kann man zum Beispiel die im Folgenden beschriebene Methode über den XmlSerializer anwenden. Selbst generische List<T> Typen werden dabei automatisch serialisiert. Die Modifikation der Werte kann z.B. über ein PropertyGrid vom User vorgenommen werden, indem man das Array-Objekt einfach der SelectedObject-Eigenschaft des PropertyGrid's zuweist:
2.0ImplementationDownload 27.12.200602.01.2007
XmlSerializer.htmMit dem XmlSerializer eigene Objekte serialisieren und deserialisierenMit .NET ist es sehr einfach eigene Objekte (aus eigenen Klassen) in eine Datei zu schreiben und sie dort wieder heraus zu holen.
Über das moderne und allseits akzeptierte XML-Format hat man auch gleichzeitig interoperable Schnittstellen, die den Wert der Anwendung erhöhen. Aber auch eine rein binäre Persistierung ist möglich.
Folgende Beispielanwendung erzeugt aus einem Person[ ]-Objekt einepersonen.xml und liest sie danach wieder aus.
1.1/2.0SerialisierungDownload .NET 2.0 28.09.200525.11.2007
XmlTextReader.htmXmlTextReader Bug bei Eingabe-Stream nach SP1Nach einem Upgrade von .NET-1.1 auf .NET-1.1-SP1, kann es u.U. beim XmlTextReader Probleme beim Einlesen geben. Hier ein Workaround dafür.
1.1Serialisierung  08.04.200508.04.2005
XmlXsdLesenSchreiben.htmAus XML mittels XSD.exe automatisch Schreib-Lese-Zugriffe generierenHier wird gezeigt, wie man von XML automatisch zu einer Klassen-Repräsentation innerhalb des Codes kommen kann und durch ein automatisch erstelltes DataSet einen Schreib-Lese-Zugriff bekommt.2.0XMLDownload 21.10.200630.04.2007
XslTransform.htmXSL TransformationBeispiel einer Transformation von XML nach HTML über XslCompiledTransform.Transform().
2.0ImplementationDownload2 15.07.200610.02.2008