.NET Blog   ·   .NET Casts   ·   .NET GUI Foren   ·   .NET BlogBook   ·   WPF Blogger   ·   visual studio one   ·   ASP.NET professional

  • ACHTUNG - NEUES BLOG

    Ab sofort steht unter http://devtyr.norberteder.com mein neues Blog zur Verfügung. Dieses Blog wird nicht weiter betreut, bleibt aber erhalten. Neue Eintr%auml;ge erfolgen nur mehr im neuen Blog. Kommentare werden ebenfalls nicht mehr behandelt. Wer weiterhin meinen Einträgen und Aktivitäten folgen möchte, möge bitte RSS-Feeds, Verlinkungen etc. an die neue Location anpassen.
Download .NET Essentials Installer
Trickkiste

Der Unterschied: Wissenschaftler vs Normalbürger

12.10.07 - Entwicklung, Diskussionen, Internet, Kunterbunt
Beitrag von Norbert Eder
 Das kennen wir doch aus der IT doch ebenso. Alles muss reproduzierbar gemacht werden, selbst wenn es noch so schmerzt ...



via xkcd
  2 Kommentare - 396 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Visual Studio 10 mit Multi Monitor Support

12.10.07 - .NET, Visual Studio
Beitrag von Norbert Eder
 Noah Coad, Program Manager Visual Studio Platform, berichtet in seinem Blog, dass Visual Studio 10 (also der Nachfolger von VS 2008) mehrere Monitore unterstützen soll. In seiner Blogpost bittet er um Feedback von der Community, um in der frühen Planphase Informationen darüber zu bekommen, was denn auch tatsächlich gewünscht wird und auch sinnvoll ist. Einfach durchlesen und bei Bedarf einen Kommentar hinterlassen.
  2 Kommentare - 485 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


FxCop in der Version 1.36 Beta verfügbar

11.10.07 - Qualitätsmgmt., .NET, Allerlei
Beitrag von Norbert Eder
 Ab sofort steht die 1.36 Beta von FxCop zur Verfügung. Unter anderem sind folgende Punkte inkludiert:
  • 200+ bug fixes that reduce noise, missing analysis and rule crashes
  • Support for analyzing anonymous methods and lambda expressions
  • New option for skipping analysis over tool generated code
  • Better support for C++/CLI and the Compact Framework
  • Language 'friendly' API names in the UI and resolutions (ie Visual Basic syntax if running over a Visual Basic binary)
  • New globalization, design and usage rules
  • Performance improvements that cut analysis by 2x and use half as much memory
  • Documentation that is now available on MSDN

Auf zum Download.
Auf zur Dokumentation

Weitere Informationen sind auch im Visual Studio Code Analysis Team Blog verfügbar.
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


WPF in Windows Forms verwenden

11.10.07 - .NET, WPF
Beitrag von Norbert Eder
 In einem kleinen Projekt musste ich WPF-Controls in einer Windows Form verwenden. Wer vor eben solcher Geschichte steht, sollte einen Blick auf den Artikel Hosting a WPF Control in a Windows Forms Application. Interessante Sache.

Edit: Da dieser Artikel noch auf eine Beta aufbaut, möchte ich hier kurz die notwendigen Schritte erläutern, da sich doch etwas geändert hat.

WPF-Control erstellen


Im ersten Schritt muss ein entsprechendes WPF-Control erstellt oder ein vorhandenes benutzt werden. In meinem Beispiel habe ich ein einfaches UserControl erstellt.
<UserControl x:Class="AddinTestApp.LoginControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="118" Width="300">
    <Grid Height="120">
        <Label Height="23" HorizontalAlignment="Left" 
               Margin="9,19,0,0" Name="label1" 
               VerticalAlignment="Top" Width="120">
            Username
        </Label>
        <Label Height="23" HorizontalAlignment="Left" 
               Margin="9,40,0,0" Name="label2" 
               VerticalAlignment="Top" Width="120">
            Password
        </Label>
        <TextBox Height="21" Margin="91,21,20,0" 
                 Name="UsernameTextBox" 
                 VerticalAlignment="Top" />
        <TextBox Height="21" Margin="91,44,20,0" 
                 Name="PasswordTextBox" 
                 VerticalAlignment="Top" />
        <Button Height="23" HorizontalAlignment="Right" 
                Margin="0,77,20,0" Name="LoginButton" 
                VerticalAlignment="Top" Width="75">
            Login
        </Button>
    </Grid>
</UserControl>


Windows Formular erstellen


Im zweiten Schritt wird ein normales Windows-Forms-Formular erstellt. Im selben Projekt müssen nun einige Referenzen hinzugefügt werden:

PresentationCore
PresentationFramework
UIAutomationProvider
UIAutomationTypes
WindowsBase

Zusätzlich ist noch die Assembly WindowsFormsIntegration.dll zu laden. Diese befindet sich für gewöhnlich im Ordner:
%programfiles%\Reference Assemblies\Microsoft\
Framework\v3.0\WindowsFormsIntegration.dll


WPF-Control zur Anzeige bringen


Wenn nun sowohl das WPF-Control als auch das Windows Formular erstellt wurden, kann das WPF-Control folgendermaßen eingebunden werden:
private void MainForm_Load(object sender, EventArgs e)
{
    ElementHost host = new ElementHost();
    LoginControl lc = new LoginControl();
    host.Child = lc;
    
    host.Dock = DockStyle.Fill;
    this.Controls.Add(host);
}

Bei einem Start der Anwendung sollte nun das WPF-Control sichtbar sein. Wichtig hierbei ist, dass das Host-Element via DockStyle.Fill am Windows Formular ausgerichtet werden muss.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


C#: Arbeit mit der Registry

10.10.07 - .NET, Grundlagen, Base Framework, Datenverwaltung
Beitrag von Norbert Eder
 Die Registry wird noch immer häufig verwendet, um bestimmte Daten zu hinterlegen. .NET bietet hierfür die Klasse RegistryKey.

Hier ein Beispielcode wie Daten in die Registry geschrieben werden können:
RegistryKey rk = Registry.CurrentUser;
RegistryKey rkSoftware = 
  rk.OpenSubKey("Software", true);
if (rkSoftware != null)
{
    RegistryKey rkCompany = 
      rkSoftware.OpenSubKey("Norbert Eder",true);
    if (rkCompany == null)
    {
        rkCompany = rkSoftware.CreateSubKey("Norbert Eder");
    }
    RegistryKey rkInstaller = 
      rkCompany.OpenSubKey("MySoftware", true);
    if (rkInstaller == null)
        rkInstaller = rkCompany.CreateSubKey("MySoftware");

    rkInstaller.SetValue("value1", "test1");
    rkInstaller.SetValue("value2", "test2");

    rkInstaller.Close();
    rkCompany.Close();
    rkSoftware.Close();
}
rk.Close();

Natürlich müssen die Werte auch wieder ausgelesen werden. Dies passiert auf folgende Art und Weise:
RegistryKey rk = 
    Registry.CurrentUser.OpenSubKey
      (@"Software\Norbert Eder\MySoftware");
if (rk != null)
{
    string value1 = (string)rk.GetValue("value1");
    string value2 = (string)rk.GetValue("value2");

    rk.Close();
}

Damit sollte es nun einfach möglich sein, Werte in die Registry zu schreiben und daraus auszulesen. Eventuell empfiehlt es sich, hier noch genauer im MSDN nachzulesen, um zusätzliche Informationen zu erhalten.
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Controls auf einem Formular bewegen

10.10.07 - .NET, Grundlagen, Base Framework, WPF
Beitrag von Norbert Eder
 In Foren als auch meiner Inbox taucht immer wieder die Frage auf, wie man denn bewegbare Controls erstellen kann, um beispielsweise ein Diagramm zu zeichnen etc. Deshalb möchte ich hier ein ganz kleines Beispiel zeigen, wie in zwei Minuten eine bewegliche Basisklasse für bewegliche Controls erstellt werden kann. Und hier kommt schon der Sourcecode:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace MoveableControlDemo
{
    public partial class MoveableBaseControl 
        : UserControl
    {
        private bool _isMoving = false;
        private int _deltaX = 0;
        private int _deltaY = 0;

        public MoveableBaseControl()
        {
            InitializeComponent();
        }

        private void MoveableBaseControl_MouseDown(
            object sender, 
            MouseEventArgs e)
        {
            _isMoving = true;
            _deltaX = e.X;
            _deltaY = e.Y;
        }

        private void MoveableBaseControl_MouseUp(
            object sender, 
            MouseEventArgs e)
        {
            _isMoving = false;
        }

        private void MoveableBaseControl_MouseMove(
            object sender, 
            MouseEventArgs e)
        {
            if (_isMoving && e.Button == MouseButtons.Left)
            {
                this.Location = new Point(
                    this.Location.X + (e.X - _deltaX), 
                    this.Location.Y + (e.Y - _deltaY)
                    );
            }
        }
    }
}

Im Grunde passiert nicht viel. Es wird lediglich festgehalten wann sich das Control bewegen soll und wann nicht (MouseDown und MouseUp). Bei einem MouseMove wird anschließend die Position des Controls berechnet. Zu beachten ist hier nur, dass die MouseEventArgs die Position des Cursors innerhalb des Controls angibt und nicht auf Formular- bzw. Screen-Basis. Daher muss das Delta zum Rand des Controls beim MouseDown festgehalten werden, um dies später in die Berechnung einfließen zu lassen.

Dieses Control kann sozusagen als ein Basis-Control verwendet werden. Zum Test einfach in ein Projekt einbauen, auf ein Formular ziehen, Anwendung starten und mit der Maus über das Formular bewegen.
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Google mit eigenem Betriebssystem for Mobiltelefone ... Werbung pur?

09.10.07 - Internet, Kunterbunt
Beitrag von Norbert Eder
  Laut der New York Times will Google nun wohl ein Betriebssystem für Mobiltelefone herausbringen. Genauere Informationen bitte aus dem Artikel beziehen. Was ich nur sagen möchte:

Was bedeutet das für den Benutzer solcher Handies? Die gespeicherten Kontakte, sämtliche SMS, Emails etc. werden nun mit AdSense versehen? Werbung pur am Handy? Ich will da gar nicht weiter darüber nachdenken ...
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Barcamps everywhere. Auch in Graz Interesse?

08.10.07 - .NET, Internet, Community
Beitrag von Norbert Eder
 Barcamps sind doch ein relativ heisses Thema in letzter Zeit. In Graz hatten wir das Vergnügen (soweit ich weiß) aktuell noch nicht. Daher die Frage in die Runde ob hier ein Interesse besteht. Keine Ahnugn wieviele Grazer mein Blog tatsächlich lesen, dennoch die Frage. Bei Interesse bitte ich um eine kurze Rückmeldung. Von Interesse wären ein paar Stunden zum Thema .NET und aktuelle Technologien. Vortragsthemen würden sich sicherlich zur Genüge finden. Also einfach bei mir melden.
  2 Kommentare - 342 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Tags, Blogroll ... Blogs besser vernetzen

08.10.07 - Internet, Community
Beitrag von Norbert Eder
 Vorweg: Ich habe mir schon recht lange (auch mit anderen) Gedanken über dieses Thema gemacht. Über Input wäre ich auf jeden Fall dankbar bzw. vielleicht ergibt sich daraus auch ein kleines .NET Projekt, mal sehen was so für Einfälle zu Tage gebracht werden.

Grundsätzlich geht es darum: Jeder kennt Blogrolls und Tags. Wer dies nicht kennt:

Blogrolls
Eine Liste auf dem eigenen Blog die auf andere Blogs verweist, die man für gewöhnlich liest und daher empfehlen möchte.

Tags
Beschreiben die Inhalte eines Blogs nach Schlagwörtern, nach denen teilweise gesucht werden kann oder in manchen Fällen auch als Tag-Cloud (welche Schlagwörter kommen am Häufigsten vor) angezeigt werden.

Nun ist es doch so, dass dies zwar einen kleinen Teil zur Vernetzung von Inhalten (abgesehen der Verweislinks) beiträgt, aber dann doch nicht alles sein kann. Ein Link zu einem anderen Blog ist natürlich erwünschenswert, zeigt aber noch immer nicht, was daraus man wirklich favorisiert. Bei den Tags sieht es ganz anders aus: Eigentlich finde ich sie ziemlich sinnlos. Tags sind schlussendlich nichts anderes als Schlüsselwörter oder Suchwörter, wie sie auch in Google/Live Search/etc. eingegeben werden. Sie werden lediglich zusammengefasst angezeigt.

Nun hat mich das auf einen Gedanken gebracht: Was wäre denn, könnte man Blogs wesentlich enger miteinander verbinden? Dies könnte passieren indem beispielsweise das Thema "verwandte Themen" aufgegriffen wird, um auch passende Einträge aus der Blogroll anzuzeigen. Der Besucher würde dadurch ein wesentlich weiteres Spektrum an Informationen/Antworten/etc. erhalten. Der Nutzen würde steigen und grundsätzlich hätte die gesamte Community etwas davon.

Auch andere Verbindungen wären möglich: Einbinden in die Suche beispielsweise. Diese müsste eben den Content der verlinkten Blogs ebenfalls durchsuchen und zurückliefern. Da es im Normalfall so ist, dass jeder Blogger hauptsächlich themenverwandte Blogs in die Blogroll mit aufnimmt wären die Treffer des Besuchers wesentlich höher und der Weg über Google, Live Search, Technorati geringer. Die Hits würden vermehrt unter den Themenblogs aufgeteilt. Vorteile quasi für alle.

Was sagt ihr hier dazu? Gäbe es hier tatsächlich Möglichkeiten weiter zusammen zu rücken und dem einzelnen Besucher bessere Ergebnisse zu liefern? Wie seht ihr meine angedachten Punkte? Potential? Unfug? Eure Meinung ist wirklich gefragt!
  5 Kommentare - 425 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


BlogEngine.NET aufgebohrt ...

08.10.07 - .NET, Datenverwaltung, Allerlei, Internet, Tools, 3rd Party Tools
Beitrag von Norbert Eder
 Diejenigen, die sich die neue Website von DasBackup genauer angesehen haben, bemerkten vermutlich, dass ich BlogEngine.NET dafür eingesetzt habe. Teils aus Interesse, teils weil ich vernommen hatte, dass BlogEngine.NET wirklich sehr NETt sein soll.

Nun gut. Meine Erfahrung bei der Umsetzung der neuen Webpräsenz hat eigentlich eine Bestätigung gebracht. Wirklich ein sehr feines Teil. Daraufhin schoss gleich der nächste Gedanke ein. Eine Portierung dieses Blogs auf BlogEngine.NET. Nun gut. BlogEngine.NET unterstützt blogML. Zusätzlich gibt es ein Importer-Tool, welches via ClickOnce geladen wird (Achtung Firefox User: hier muss FFClickOnce installiert sein). Zur Auswahl steht der Import von blogML als auch RSS.

Problem Nr. 1: Der RSS-Import funktioniert bei mir nicht. Es handelt sich angeblich um ein invalides RSS. Sehr fein. Alles andere kann mit diesem Feed umgehen, nur das Importer-Tool nicht. Also scheidet dieser Weg hiermit aus.

Problem Nr. 2: Woher nun ein blogML-File bekommen? Schnell eine Solution angelegt, die blogML-DLL eingebunden und flux einen Importer geschrieben, welcher aus sämtlichen Inhalten des Blogs ein blogML-File generiert. Möööööööööp. Wieder nichts. Es validiert, wird aber nicht importiert. Feine Sache.

Und nun? Ich bin zwar immer noch von BlogEngine.NET begeistert, dennoch verstopfen sich zunehmends meine Nebenhöhlen. Was lernt man daraus? In der EDV ist dann doch nicht alles so einfach wie angenommen. Aber sollte ich das Problem lösen, dann werde ich das Tool natürlich für all die anderen SimplePHPBlog-User da draussen veröffentlichen, die eventuell auf ein System umsteigen möchten, das blogML unterstützt (BlogEngine.NET, WordPress etc.).

  4 Kommentare - 522 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL



Zurück Weiter