Alle Beiträge der Kategorie .net

Für die Anzeige der Geburtstagsliste in Klebezettel reagiert Klebezettel auf das Aufwecken aus dem Standbymodus und Ruhezustand, um die Liste der aktuellen Geburtstage anzuzeigen.

Für die Neuentwicklung in C# habe ich dazu folgendes gefunden:

Um auf Änderungen des Powermodus zu reagieren, gibt es das Event PowerModeChanged. Diesem weist man beim Programmstart einen Eventhandler zu:

SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
[...]

// Eventhandler, der beim Wiederaufwachen aus dem Standby / Ruhezustand eine Aktion ausführen soll
void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
        {
            if (e.Mode == PowerModes.Resume)
            {
               //ToDo: Geburtstagsliste anzeigen
            }
        }

Für mich gibt es bei der Entwicklung mit C# immer wieder neues zu entdecken. Bei der Google-Suche nach einem Toggle Button (“Ein-Aus”-Button) für Windows Forms bin ich über einen Tipp gestolpert, der vorschlägt, bei einer CheckBox das Property “Appearance” auf “Button” zu setzen – und schon ist ein ToggleButton fertig Smiley

Dasselbe geht übrigens auch mit RadioButtons!

Die folgende Methode habe ich beim c# Seminar in Hamburg erstellt:

private string roman(int number)
        {
            StringBuilder result = new StringBuilder();
            int[] digitsValues = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
            string[] romanDigits = { "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M" };
            while (number > 0)
            {
                for (int i = digitsValues.Count() - 1; i >= 0; i--)
                    if (number / digitsValues[i] >= 1)
                    {
                        number -= digitsValues[i];
                        result.Append(romanDigits[i]);
                        break;
                    }
            }
            return result.ToString();
        }

Das .net PropertyGrid

18. September 2010

Seit ich meine eigenen Tools fast ausschließlich mit c# entwickle, vergeht kein Tag, an dem ich nichts neues entdecke.

Heute habe ich das PropertyGrid kennen gelernt. Das Property Grid ist ein Steuerelement, mit dem man die Attribute eines beliebigen Objekts darstellen und bearbeiten kann (Voraussetzung: die Objekts sind als Properties implementiert). Ich bin durch einen Newsgroup-Beitrag auf diese Komponente aufmerksam geworden und bin einfach nur begeistert!

Ich bin ja seit einigen Wochen für Tools, die ich für mich selbst entwickle, mit c# und dem Microsoft .Net Framework unterwegs. Bei meinen Recherchen im Netz bin ich auch über die Seite dotnetperls.com gestolpert. Dort habe ich heute eine ganz nette Erklärung zu der Methode GetDaylightSavingTime() vom DateTime Typ gefunden:

DateTime.GetDaylightSavingTime
Daylight saving time is what we get for letting our politicians pretend to be
scientists. Not useful in Arizona.

(Erklärung für nicht-Programmierer und nicht der englischen Sprache mächtigen):

Die Methode GetDaylightSavingTime ermittelt, ob das Datum sich innerhalb der Sommerzeit befindet oder nicht. Die Beschreibung der Methode oben lautet:

“Sommerzeit ist das was dabei rauskommt, wenn wir zulassen, dass unsere Politiker so tun, als wären sie Wissenschaftler. Nicht nützlich in Arizona.”

Den zweiten Satz kapiere ich selbst leider nicht. Ich vermute, dass es in Arizona keine Sommerzeit gibt?

DataGridView zu langsam

14. September 2010

In den letzten Tagen habe ich mit c# eine Anwendung zur Analyse meiner Mailserver-Logs entwickelt. Das Ergebnis der Auswertung (es wird für jede empfangene oder gesendete Mail ein Datensatz mit den Maildaten und dem Zustellergebnis generiert) zeige ich in einem dataGridView an.

Leider lässt die Performance des DataGridView-Steuerelements bei vielen Elementen zu wünschen übrig. Was also tun? Eine Möglichkeit wäre es, das DataGridView im virtuellen Modus zu betreiben. Das wäre aber zusätzlicher Aufwand. Also habe ich Google bemüht und eine Lösung dafür gefunden.

Was macht die Lösung? Über eine “ExtensionMethod” wird das Property DoubleBuffered verfügbar gemacht, das dann mit

dataGridView1.DoubleBuffered(true);

gesetzt wird.

Ich habe ganze 2 Tage gebraucht, um auf meinem Rootserver Mono zum Laufen zu bringen.

Mit der Anleitung vom Mono-Projekt hatte es leider nicht funktioniert.

Nach vielem Probieren habe ich es dann doch geschafft:

1. etc/apache2/httpd.conf editieren, folgende Zeile einfügen:

Include /etc/apache2/conf.d/mod_mono.conf

2. /srv/www/vhosts/<domainname>/conf/vhost.conf erstellen oder editieren und folgende Einträge vornehmen:

Alias /app "/srv/www/vhosts/<domainname>/httpdocs/aspnet"
AddMonoApplications aspnetapp "/app:/srv/www/vhosts/<domainname>/httpdocs/aspnet"
MonoDocumentRootDir aspnetapp "/srv/www/vhosts/<domainname>/httpdocs/aspnet"
MonoServerPath aspnetapp "/usr/bin/mod-mono-server2"
<Location /app>
   MonoSetServerAlias aspnetapp
   AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx .axd
</Location>

Erklärung:

aspnetapp ist ein Aliasname, der frei gewählt werden kann. Unter diesem Namen wird Mono gestartet.

app ist ein Alias-Name für das Verzeichnis /aspnet, in dem die Quelldateien der Asp.net Anwendung abgelegt werden.

Zu beachten ist außerdem, dass das Verzeichnis mit der Asp.net Anwendung Leserechte für andere zugewiesen bekommt.

3. ausführen: /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=<domain-name.de>

4. /etc/init.d/apache2 restart