Blog Home  Home Feed your aggregator (RSS 2.0)  
artiso Blog - Thursday, August 24, 2006
Neues rund um's Thema .Net
 
 Thursday, August 24, 2006
Ich habe im Speicher ein DataView mit ca. 22000 Datensätzen. Aus diesem DataView musste ich nun innerhalb einer Schleife 55 Abfragen machen. Dazu zwei Methoden:

dvINNs.RowFilter = "ProductDSID = " + drProducts["ProductDSID"];
foreach (DataRowView drINN in dvINNs)
{
...
}

oder

foreach (DataRow drINN in dvINNs.Table.Select("ProductDSID = " + drProducts["ProductDSID"]))
{
...
}

Ich habe eine Zeitmessung durchgeführt. Dies ergab für Methode I 1,5 Sek und für Methode II 0,03 Sek. D.h. der Select ist um Faktor 50 (in meinem Beispiel) schneller als der RowFilter.

Thursday, August 24, 2006 7:50:19 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Wednesday, August 23, 2006

Oft möchte man von einem DateTime-Wert die Kalenderwoche abfragen. Hierzu gibt es eine einfache Funktion:

Application.CurrentCulture.Calendar.GetWeekOfYear(CurrentDate, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

Dabei steht in CurrentDate das aktuelle Datum und die beiden anderen Parametern definieren Regeln, welche Woche als erste KW gilt. Standard in Deutschland ist dass der 1. Janur in KW 1 liegt, wenn dieser Tag ein Montag, ein Dienstag oder ein Mittwoch ist. Andernfalls zählt der 1. Januar noch zur letzten Woche des alten Jahrs und die KW1 beginnt am darauffolgenden Montag.

Wednesday, August 23, 2006 8:37:33 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Tuesday, August 22, 2006

Auf MSDN solve bekommt man ein VS 2005 Standard Edition und 6 Monate kostenloses Web-Hosting wenn man min. 5 CodeClips anschaut.

 

http://www.microsoft.com/germany/msdn/solve/news/watchandwin.mspx

Tuesday, August 22, 2006 8:22:20 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Um Einträge in die Toolbox von VS hinzuzufügen gibt es die Standard-Methode - rechte Maustaste, Elemente auswählen und sich dann die Elemente einzeln auswählen um sie hinzuzufügen. Weniger bekannt ist eine Methode, die gerade bei einer größeren Anzahl hinzuzufügender Controls schneller ist. Man kann die zugehörigen DLL-Dateien einfach per Drag & Drop aus dem Windows-Explorer auf die Toolbox ziehen.

Tuesday, August 22, 2006 6:02:21 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Der kostenlose Internet Explorer Developer Toolbar von Microsoft bietet eine Fülle von sehr nützlichen Funktionen für Web-Entwickler. Der Toolbar integriert sich im Internet-Explorer. Man kann sich z.B. Objekte wie Tabellen, Bilder, DIVs etc. durch eine Umrandung hervorheben lassen oder man kann die komplette DOM-Struktur dursuchen und die Eigenschaften der Elemente abfragen und sogar verändern. Die Änderungen werden sofort sichtbar. Darüber hinaus werden noch eine vielzahl nützlicher Helfer angeboten, z.B. um Cookies anzuzeigen und zu löschen etc. Ein Tool, das bei keinem Web-Entwickler fehlen sollte!

http://www.microsoft.com/downloads/details.aspx?FamilyID=E59C3964-672D-4511-BB3E-2D5E1DB91038&displaylang=en

Tuesday, August 22, 2006 5:59:42 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Oft möchte man den Monatsnamen eines Datums in der jeweiligen Landessprache des Anwenders ausgeben. Dies kann man einfach mit einer Zeile Code bewerkstelligen:

string MonthName = Application.CurrentCulture.DateTimeFormat.MonthNames[DateTimeValue.Month-1];

Alternativ kann man auch die Kurzform der Monate über die Eigenschaft AbbreviatedMonthNames abfragen.

Will man eine spezifische Sprache zur Ausgabe verwenden, kann man dies natürlich auch tun indem man einfach das entsprechende CultureInfo-Objekt verwendet:

CultureInfo ci = new CultureInfo("de-DE");
ci.DateTimeFormat.MonthNames[MonthID];

Tuesday, August 22, 2006 3:59:59 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Unter http://www.galileocomputing.de/openbook/visual_csharp/index.htm kann man kostenlos den gesamten text des Buches "Visual C# 2005" lesen und auch herunterladen. Das Buch ist gut geschrieben und enthält umfangreiches Wissen zur Programmierung mit C#. Es sit auf dem aktuellsten Stand (C# 2.0) und geht auch auf alle wichtigen Neuerungen ein.

Mir hat das Buch so gut gefallen, dass ich mir gleich eine Print-Version gekauft habe. Aber es kann sich ja jeder kostenlos überzeugen ;-)

Jedenfalls finde ich das Openbook-Konzept gut, da ich so die Katze nicht im Sack kaufen muss.

Tuesday, August 22, 2006 3:36:59 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Im Infragistics-Grid lassen sich einfach dei Beschriftungen der einzelnen Gruppen der Outlook-Gruppierung einstellen. Hierzu muss lediglich der Event InitializeGroupByRow verwendet werden. Das folgende Beispiel ändert die Beschriftung so ab, dass nur die Bezeichnung der Gruppe ausgegeben wird.

private void ultraGrid1_InitializeGroupByRow(object sender, Infragistics.Win.UltraWinGrid.InitializeGroupByRowEventArgs e)
{
    e.Row.Description = e.Row.Value.ToString();
}

Tuesday, August 22, 2006 3:27:03 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

In Ulm gibt es nun auch eine .net User-Group.

Die .net Developer-Group Ulm ist eine Organisation, die den Wissens- und Erfahrungsaustausch zwischen .net Entwicklern aus der Region Ulm und Oberschwaben fördern möchte. Jeder kann kostenlos und unverbindlich Mitglied werden.

In regelmäßigen Abständen werden Mitgliedertreffen abge-halten, bei denen Vorträge zu aktuellen Themen gehalten werden.

www.dotnet-ulm.de

Tuesday, August 22, 2006 10:06:39 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Das MSDN-Wiki ist eine Erweiterung zur MSDN-Dokumentation mit Tipps und Tricks aus der .net Community.

Das MSDN-Wiki funktioniert jetzt auch mit FireFox und es bietet nun auch eine RSS-Unterstützung.

http://msdnwiki.microsoft.com/en-us/mtpswiki/default.aspx

Tuesday, August 22, 2006 8:26:07 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Jede Menge Code-Snippets für alle Lebenslagen finden sich unter

http://dotnet-snippets.de/dns

Achtung Cookies müssen zugelassen werden, sonst funktioniert die Seite nicht korrekt.

Tuesday, August 22, 2006 7:39:50 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Saturday, August 19, 2006

Recht bekannt ist die Option im Infragistics Grid Datensätze durch einen Klick auf den Kopf einer Spalte zu filtern.

Es gibt aber auch die Möglichkeit, eine Zeile einzublenden, in der die Filterbedingung für jede Spalte eingegeben wird. Der Vorteil liegt dabei darin, dass auch nur Anfangsbuchstaben eingegeben werden können. Um dies zu erreichen, stellt man einfach im Designer Dialog unter Feature Picker die Option Filtering / Filter UI Type auf Filter Row. Das Ergebnis sieht dan so aus:

Saturday, August 19, 2006 3:14:13 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Dieses Tool unterstützt beim Entwickeln mehrsprachiger Oberflächen. In einer Tabelle können die Textattribute für verschiedene Sprachen eingegeben werden.

http://www.jollans.com/multilang_dotnet/multilang_for_dotnet.htm

Saturday, August 19, 2006 9:12:19 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Mit XNA Game Studio Express kündigt Microsoft eine kostenlose Entwicklungsumgebung für die X-Box Plattform unter C# und der VS-IDE an.

http://msdn.microsoft.com/directx/xna/

Saturday, August 19, 2006 9:02:25 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Dieser Artikel beschreibt, wie mit Windows Workflow Foundation Workflows erzeugt und betrieben werden.

http://www.theserverside.net/tt/articles/showarticle.tss?id=WorkforProcess

Saturday, August 19, 2006 8:54:40 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Enthält auch das Entity Framework. Damit soll OR-Mapping in ADO.Net integriert werden.

http://blogs.msdn.com/adonet/archive/2006/08/15/701479.aspx

Saturday, August 19, 2006 8:51:51 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Wednesday, August 16, 2006

Mit ein paar kleinen Tricks kann man auch offline mit dem TSSC arbeiten.

http://blogs.vertigosoftware.com/teamsystem/archive/2006/07/03/2984.aspx

Wednesday, August 16, 2006 6:46:51 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Wird eine Datei aus der TeamSystem SourceControl ausgecheckt, wird von dieser datei nicht automatisch die letzte Version gehohlt wie man das von VSS gewohnt ist. Der Grund dafür ist, dass dadurch evtl. ein inkonsistenter Zustand der Anwendung entstehen könnte, da die ausgecheckte Datei in einer neueren Version vorliegt, die nicht mit den restlichen dateien des Projekts kompatibel ist.

Weitere Ausführungen unter: http://blogs.vertigosoftware.com/teamsystem/archive/2006/05/15/2755.aspx

Wednesday, August 16, 2006 6:28:08 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Monday, August 14, 2006

MSDN Solve ist die Lösung für alle Entwickler, die praxis-orientierte Hilfestellungen bei typischen Programmier-Herausforderungen suchen. MSDN Solve liefert verständliche Antworten auf immer wiederkehrende Fragen aus dem IT-Alltag und sorgt dafür, dass Sie Stolperfallen in Software-Projekten künftig leicht umschiffen.

http://www.microsoft.com/germany/msdn/solve/default.mspx

Monday, August 14, 2006 11:04:04 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Die aktuelle Bildschirmauflösung abzufragen ist in .NET denkbar einfach, möchte man jedoch alle verfügbaren Auflösungen erfragen und eventuell sogar eine neue Auflösung setzen, muss man auf die Win32 API-Mittel zurückgreifen. Dieser Beitrag stellt eine Klasse zur Verfügung mit der mit jeweils einer Zeile Code über die verfügbaren Auflösungen iteriert werden bzw. eine neue Auflösung festgelegt werden kann

http://www.codegod.de/WebAppCodeGod/Main.aspx?pid=168

Monday, August 14, 2006 6:47:42 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Sunday, August 13, 2006

Jede Menge Infos, die aktuellsten Downloads und vieles mehr findet man unter http://www.netfx3.com/

Sunday, August 13, 2006 11:52:10 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |  |   | 
 Wednesday, August 09, 2006

Ein wenig bekanntes Control ist das FlowLayoutPanel, das in VS 2005 standardmäßig enthalten ist. Mit diesem Control kann man Unterelemente in einer fließenden Ansicht darstellen wie das z.B. auch von Web-Seiten bekannt ist. Sie möchten eine Liste von Textboxen die untereinander stehen? Kein Problem mit dem FlowLayoutPanel. Sie können eine beliebige Richtung wählen (von rechts nach links, von oben nach unten etc.). Passen nicht alle Control in die Reihe, wird automatisch ein Umgruch eingefügt. Damit ist das FlowLayoutPanel wesentlich flexibler als man diese Funktion z.B. mit Docking erreichen könnte. Vor allem bei dynamisch generierten Control leistet das FlowLayoutPanel gute Dienste!

Wednesday, August 09, 2006 1:48:34 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Oft möchte man Daten, die aus Excel in die Zwischenablage kopiert wurden, in der Anwendung verarbeiten. Dies geht recht einfach, da die Excel-Daten in der Zwischenablage einfach als CSV-Format vorliegen.

string ExcelValue = "";
IDataObject ClipboadData = Clipboard.GetDataObject();
if (ClipboadData.GetDataPresent(DataFormats.CommaSeparatedValue))
{
   
StreamReader ExcelReader = new StreamReader((Stream)ClipboadData.GetData(DataFormats.CommaSeparatedValue));
   
while (!ExcelReader.EndOfStream)
   {
      ExcelValue = ExcelReader.ReadLine();
   }
}

Man holt sich die Daten aus der Zwischenablage und prüft diese, ob sie im CSV-Format vorliegen. Dann kann man mit Hilfe eines StreamReaders die Daten lesen. Die Daten kommen dann in einem Format wie z.B. 5,8;8,9;7,5. Das lässt sich nun problemlos in der eigenen Anwendung verarbeiten.

Wednesday, August 09, 2006 1:37:59 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Tuesday, August 08, 2006

Um von generischen Objekten den Typ abzufragen kann man folgenden Code verwenden:

Dictionary<string, int> MyObject = new Dictionary<string, int>();
Type T = MyObject.GetType();
Type[] Ts = T.GetGenericArguments();

Dieser Code liefert ein Array zurück, das im ersten Element System.String und im zweiten System.Double enthält.

Weitere Infos unter http://msdn2.microsoft.com/en-us/library/b8ytshk6.aspx

Tuesday, August 08, 2006 1:33:43 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Friday, August 04, 2006

Eine sehr umfangreiche Link-Liste zu den 3 Hauptthemen von .Net 3.0 gibt es unter:

Teil 1: Windows Presentation Foundation
Teil 2: Windows Communication Foundation
Teil 3: Windows Workflow Foundation

Friday, August 04, 2006 6:10:58 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Xml2PDF ist eine Komponente, mit der verschiedene XML-Formate nach PDF konvertiert werden können, unter anderem auch WordML.

http://alt-soft.com/products_xml2pdf.jsp

Friday, August 04, 2006 8:08:16 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Wednesday, August 02, 2006

Um die Work Items aller Team-Projekte eines Team-Servers anzeigen zu können, kann man einfach eine entsprechende Query anlegen. Hierzu einfach im Team-Explorer auf Work Items mit der rechten Maustaste klicken und dann "Add Query" auswählen. Die Query is dann schon mit einem Filter nach einem Projekt vorbelegt. Diesen einfach löschen, dann erscheinen alle Work Items.

 

Wednesday, August 02, 2006 7:27:32 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Wer Mono (die .Net Implementierung für Linux) ohne viel Aufwand mal testen möchte, kann sich jetzt ein VMWare-Image herunterladen, in dem alles bereits installiert ist. So kann man sofort loslegen.

http://www.mono-project.com/news/archive/2006/Jul-28.html

Wednesday, August 02, 2006 6:46:42 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Unter http://www.dnrtv.com finden sich einige Videos zum Thema .Net Entwicklung.

Wednesday, August 02, 2006 7:10:00 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Tuesday, August 01, 2006

Oft erhält mein eine Meldung in einer Message-Box und möchte den text kopieren. Mit Alt-Druck erhält man einen Screen-Shoot, aber das ist eine Grafik. Wie kommt man nun an den Text?

Mit Strg-C !

Tuesday, August 01, 2006 7:55:46 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Eine Reihe von interessanten Artikel findet man unter http://www.theserverside.net/tt/articles/index.tss

Tuesday, August 01, 2006 7:05:21 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Oft müssem am Anfang und am Ende eines Strings überflüssige Zeichen gelöscht werden. Dazu kann in .Net der Befehl Trimm eingesetzt werden.

string t = " Test ";
string Result = t.Trim(' ');

Mit Trim lassen sich aber auch mehrere Zeichen auf einmal löschen. Dabei ist die Reihenfolge der Zeichen egal!

string t = " \r\n Test \r \n ";
string Result = t.Trim('\r', '\n', ' ');

Tuesday, August 01, 2006 4:31:42 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

In einer Anwendung aus der ich auf Access via COM zugreife, wollte ich das Access-Fenster ausblenden. Die "visible" Eigenschaft kann man auch setzten - es passiert nur nix, daher das ganze über DLLImport. Wichtig ist, dass man sich den/die "handle" auf das/die Fenster merkt - die findet man sonst nicht mehr und kann sie sonst auch nicht mehr sichbar schalten.
Das Beispiel kann man natürlich auch auf jede andere Anwendung übertragen und das Process-Objekt hat ja auch noch paar andere Methoden, um ein bestimmtes Fenster zu finden, "GetProcessByID()" usw. sind auch vorhanden.

z.B. ausblenden von allen Access-Fenstern:

ArrayList processHandles = new ArrayList();
foreach (Process p in Process.GetProcessesByName("msaccess"))
{
   ShowWindow((int)p.MainWindowHandle, 0);  // 0 steht für unsichtbar
   
processHandles.Add((int)p.MainWindowHandle);
}

einblenden

foreach
(int processHandle in processHandles)
{
   
ShowWindow(processHandle, 9);  // 9 bedeutet restore - sprich so, wie das Fenster vor dem ausblenden aussah (Position, Größe)
}

und der dllimport, damit die Funktion genutzet werden kann:

[DllImport("User32")]
private static extern int ShowWindow (int hwnd, int nCmdShow);

Tuesday, August 01, 2006 5:35:56 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Friday, July 28, 2006

Unter http://msdn.microsoft.com/asp.net/reference/multimedia/ findet man eine umfangreiche Liste mit Trainings-Videos etc. zum Thema ASP.Net, größtenteils kostenlos!

Friday, July 28, 2006 7:21:51 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
Friday, July 28, 2006 7:17:18 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Mit MSBee kann MSBuild von VS2005 so konfiguriert werden, dass damit Anwendungen kompiliert werden können, die auf dem Framework 1.1 ablaufen. Dies kann vor allem zur Pflege von bestehenden Anwendungen sinnvoll sein. Neue Anwendungen zu erstellen ist jedoch recht mühsahm, weil VS 2005 automatisch partial Classes verwendet, die aber vom Framework SDK 1.1 nicht unterstützt werden.

http://www.codeplex.com/Wiki/View.aspx?ProjectName=MSBee

Friday, July 28, 2006 7:06:40 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Thursday, July 27, 2006