Blog Home  Home Feed your aggregator (RSS 2.0)  
artiso Blog - Monday, October 09, 2006
Neues rund um's Thema .Net
 
 Monday, October 09, 2006

Folgender Code zeigt, wie man in eine Zelle im Infragistics-Grid Prozentwerte aus- und eingeben kann. Zu beachten ist hierbei, dass beim BeforeExitEditMode auf die Text-Eigenschaft zugegriffen werden muss, da der Value zu diesem Zeitpunkt noch nicht gesetzt ist.

private void ugShiftDetails_BeforeEnterEditMode(object sender, CancelEventArgs e)
{
   if (this.ugShiftDetails.ActiveCell.Column.Key == "PercentColumn")
   {
      UltraGridCell c = this.ugShiftDetails.ActiveCell;
      c.Value = ((double)c.Value) * 100;
   }
}

private void ugShiftDetails_BeforeExitEditMode(object sender, Infragistics.Win.UltraWinGrid.BeforeExitEditModeEventArgs e)
{
   if (this.ugShiftDetails.ActiveCell.Column.Key == "PercentColumn")
   {
      UltraGridCell c = this.ugShiftDetails.ActiveCell;
      try
      {
         c.Value = Double.Parse(c.Text) / 100;
      }
      catch
      {
         MessageBox.Show("Invalid Input");
      }
   }
}

Monday, October 09, 2006 3:39:22 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Friday, October 06, 2006

Die Lebensdauer eines Hosts und damit auch der Instanzen der darin enthaltenen Member kann über ein Attribut gesteuert werden. Mein konkreter Anwendungsfall war, dass ich einen Status speichern wollte, der von allen Clients über die gesamte Laufzweit meines Servers abgefragt werden kann. Der Host sollte dazu am einfachsten während der gesamten Laufzeit des Servers als einzige Instanz zur Verfügung stehen. Dazu einfach folgendes Attribut zur Host-Definition hinzufügen:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
public class cClientHost : IClientInterface

Über dieses Attribut lässt sich z.B. die Lebensdauer auch für die auer einer Session einrichten.

Friday, October 06, 2006 7:07:10 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Die Fa. artiso (www.artiso.com) für die ich arbeite, sucht momentan einen .net Entwickler. Der Entwickler sollte über folgende Kenntnisse bzw. Eigenschaften verfügen:

  • C#, SQL, Winforms, ASP.Net
  • Projekterfahrung
  • Selbständiges Arbeiten

  • Qualitätsbewußtsein

Wenn jemand Inteeresse hat bzw. jemand kennt, der Interesse hat, können nähere Informationen unter tschissler@artiso.com erfragt werden.

Friday, October 06, 2006 6:46:23 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Wednesday, October 04, 2006

Speziell für IT-Manager gibt es bei Microsoft eine Webcast-Serie.

http://www.microsoft.com/events/series/itmanagerconnections.mspx

Wednesday, October 04, 2006 8:07:43 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Monday, October 02, 2006

Die Visual Studio "Orcas" September CTP kann jetzt bei Microsoft heruntergeladen werden. Die CTP wird im Moment als Virtual PC Image bereitgestellt und kann mit Hilfe von Virtual PC oder Virtual Server direkt ausgeführt werden.

Link to Download details: Visual Studio Code Name "Orcas" September 2006 CTP

Monday, October 02, 2006 1:29:59 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Friday, September 29, 2006

Paint.Net ist ein kostenloses Grafik-Tool, das umfangreiche Funktionen zur Bearbeitung von Grafiken bietet. Gerade für Entwickler düfte das Tool vollkommen ausreichen und auch eine echte Alternative zu Photshop & Co sein.

http://www.getpaint.net/

Danke an Jonas für den Link

Friday, September 29, 2006 7:29:35 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Thursday, September 28, 2006

Um in Excel Zellen bis ans Ende einer datenreihe aufzufüllen (z.B. eine Summenformel etc.), kann man einfach den zu übernehmenden Bereich markieren und dann auf das kleine Kästchen rechts unten im selektierten Bereich doppelklicken.

Ich wollte nun das gleiche Ergebnis per VBA erreichen. Dazu habe ich die zu kopierende Zelle erst mal mit dem Namen "Copy" versehen. Dann kann man mit dem folgenden Befehl das AutoFill ausführen:

Range("Copy").AutoFill Destination:=Range("H3:H" & Range("G65535").End(xlUp).Row), Type:=xlFillDefault

Damit wird der Bereich "Copy" von der Zelle H3 bis Hx kopiert, wobei x die letzte Zeile der Spalte G ist, die einen Wert enthält.

Thursday, September 28, 2006 6:53:23 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Wednesday, September 27, 2006

In seinem Blog beschreibt bharry einige Fixes und neue Features des SP1 Beta für Team Foundation Server. Scheint wohl jetzt neu zu sein, auch für Service-Packs Betas anzubieten. Na ja so kommt man früher dran und es sind hinterher hoffentlich weniger Fehler drin - mal abwarten.

http://blogs.msdn.com/bharry/archive/2006/09/26/772371.aspx

Wednesday, September 27, 2006 5:32:47 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Das Tool selber hat zwar mit .net nix zu tun, ist aber für den Entwickler trotzdem interessant. Es gibt die System-Infos auf dem Desktop aus. Funktioniert auch, wenn man eine Hintergrundgrafik eingestellt hat.

http://www.sysinternals.com/Utilities/BgInfo.html

BGInfo Screenshot

Wednesday, September 27, 2006 5:17:49 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Unter http://blogs.msdn.com/somasegar/archive/2006/09/26/772250.aspx gibt es einige Hinweise zur Beta-Version von VS 2005 SP1 sowie den Vista-Support von VS.

Wednesday, September 27, 2006 4:42:19 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Tuesday, September 26, 2006

Die September CTP des .Net Frameworks 3.0 kann unter http://www.microsoft.com/downloads/details.aspx?FamilyId=C6636E90-26E6-44E0-8780-5D3CCD3D94ED&displaylang=en heruntergeladen werden. UNter http://msdn.microsoft.com/windowsvista/support/relnotes/netfxSEPTCTP/default.aspx  finden sich bekannte Fehler und Systemanforderungen.

Tuesday, September 26, 2006 11:03:56 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Beim Databinding möchte man oft Einfluss auf die Darstellung der Werte auf der Oberfläche nehmen. Ein typischer Fall hierzu ist z.B. das Databinding mit Prozentwerten. Hier hat man z.B. einen Wert 0,5 der als 50% angezeigt werden soll. Wenn der Benutzer dann 40% eingibt, soll dieser Wert in 0,4 konvertiert werden. Hierzu kann man die Format- und Parse-Events des Databindings verwenden.

Zuerst müssen die Events definiert werden. Dabei gehen wir in dem Fall davon aus, dass es sich um das erste Databinding auf dem Control handelt.

this.txtValue.DataBindings[0].Format += new ConvertEventHandler(ValueInputPercent_Format);
this.txtValue.DataBindings[0].Parse += new ConvertEventHandler(ValueInputPercent_Parse);

Dann können in den Eventhandlern die entsprechenden Formatierungen vorgenommen werden. Dies können natürlich auch noch mit entsprechenden Fehlerprüfungen versehen werden.

void ValueInputPercent_Parse(object sender, ConvertEventArgs e)
{
  e.Value =
Double.Parse(e.Value.ToString().TrimEnd('%')) / 100;
}

void ValueInputPercent_Format(object sender, ConvertEventArgs e)
{
  e.Value = ((
double)e.Value) * 100 + "%";
}

Tuesday, September 26, 2006 11:01:11 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

User-Controls werden im Designer von Visual Studio  genauso instanziert wie zur Laufzeit. Um hier unterscheiden zu können, kann man mit der Variable DesignMode abfragen, in welchem Modus die Komponente momentan initialisiert wird. Die ist z.B. sinnvoll, wenn man beim instanzieren auf Objekte zugreift, die im DesignMode gar nicht zur Verfügung stehen. Hier ein kleines Beispiel:

public MyControl()
{
  InitializeComponent();
  if (!DesignMode)
  {
    try
    {
      shiftConfiguration.ReadXml(ConfigurationManager.AppSettings["ShiftConfigFile"]);
    }
    catch (Exception ex)
    {
      MessageBox.Show("Error reading Shift Configuration File\n\nError : " + ex.Message);
    }
  }
}

Tuesday, September 26, 2006 10:56:22 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Monday, September 25, 2006

Ich habe heute ein Update meiner Blog-Software eingespielt. Es gibt da im Moment noch ein paar kleinere Probleme z.B. mit den Kommentaren. Ich bin dabei das zu beheben. Wenn jemand sonst noch Fehler auffallen, bitte mir kurz melden.

Monday, September 25, 2006 4:09:38 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Friday, September 22, 2006

Als Erweiterung zu meinem Beitrag zum Übernehmen von Excel-Daten über die Zwischenablage (http://www.artiso.com/ProBlog/PermaLink,guid,2017b61d-19f4-4e4a-a033-cbf820d2b18e.aspx) hier nun das Gegenstück, Daten über die Zwischenablage an Excel übergeben:

string Data = "1,1;2,7;3,1;4,8;5,9";
Byte[] ClipboardData = Encoding.UTF8.GetBytes(Data);
MemoryStream ClipboardStream = new MemoryStream(ClipboardData);
DataObject DataObj = new DataObject(DataFormats.CommaSeparatedValue, ClipboardStream);
Clipboard.SetDataObject(DataObj, true);

Daten über mehrere Zeilen werden übrigens mit Environment.NewLine getrennt.

Friday, September 22, 2006 2:26:27 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Der nachfolgende Code zeigt, wie JPEG Grafiken (und ebenso auch andere Formate) verlustlos rotiert werden können:

Image i = Image.FromFile(this.imageFilename);
ImageCodecInfo usedIC = this.GetEncoderInfo("image/jpeg");

System.Drawing.Imaging.Encoder encoder =
System.Drawing.Imaging.Encoder.Transformation;

EncoderParameters encparams = new EncoderParameters(1);
EncoderParameter encparam =
new EncoderParameter(encoder,
(long)EncoderValue.TransformRotate270);
encparams.Param[0] = encparam;

i.Save("filename.jpg", usedIC, encparams );

i.Dispose();
i = null;
GC.Collect();

Quelle: http://blog.norberteder.com/index.php?entry=entry060920-223506

Friday, September 22, 2006 6:43:24 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

HTML-Emails mit integrierten Bildern zu verschicken ist unter .net gar nicht schwer - wenn man weiss, wie es geht. Hier ist's beschrieben:

http://blog.freakfabrik.net/PermaLink.aspx?guid=2fc780aa-14e2-45a6-a58e-73bfbd966905

Friday, September 22, 2006 5:56:58 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

.net bietet keine Funktion, um eine Form einfach auszudrucken. Diese Lücke schließt nun Microsofts PrintForm Component 1.0.

http://www.microsoft.com/downloads/details.aspx?familyid=286111b0-6965-46cc-bf6f-c5ee63b1f98c&displaylang=en#filelist

Damit läßt sich bereits mit 2 Zeilen Code eine Form ausdrucken.

this.printForm1.Form = this;
this.printForm1.Print();

Die Komponentebietet darüber hinaus noch eine Vielzahl von Einstellmöglichkeiten, z.B. zur Anzeige einer Druckvorschau etc.

Übrigens nicht durch den Namespace (Microsoft.VisualBasic.Powerpacks) irritieren lassen, die Compunente funktioniert auch unter C# ;-)

Friday, September 22, 2006 5:52:56 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Wednesday, September 20, 2006

User-Controls können auch mit eigenen Events erweitert werden. Das ist eigenlich recht simpel. Man definiert einfach einen Event, z.B.

public event EventHandler LinesChanged;

Dann ruft man an der Stelle, an der der Event ausgelöst werden soll einfach den Event auf. Das geht am einfachsten über:

LinesChanged(this, EventArgs.Empty);

Der Event kann dann außerhalb des User-Controls wie gewohnt mit einem Eventhandler ausgewertet werden. Möchte man mehr Informationen als den Sender übergeben, erstellt man sich einfach eine Klasse, die man von EventArgs ableitet und übergibt dann eine Instanz dieser Klasse beim Aufruf des Events, z.B.

public class MyEventArgs : EventArgs
{
   private string msg;

   public MyEventArgs( string messageData ) 
   {
      msg = messageData;
   }
   public string Message { 
   get { return msg; } 
   set { msg = value; }
   }
}

Damit der Eventhandler nun auch noch den richtigen Datentyp für die EventArgs übergeben bekommt braucht mann noch ein Delegate, z.B.

public delegate void MyEventHandler(object sender, MyEventArgs e);

Der Event muss nun entsprechend deklariert werden:

public event MyEventHandler LinesChanged;

Um den Eventhandler nun zu erzeugen, legt man in der umgebenden Klasse eine Instanz des Objektes an, das den Event wirft. Auf dieser Instanz kann man nun den Event mit dem Handler verbinden. Das geht in VS ganz einfach. Man gibt z.B. ein:

MyControl.LinesChanged +=

Dann drückt man zweimal Tab und schon hat man den Eventhandler angelegt. Fertig sieht das dann ungefähr so aus:

MyControl.LinesChanged += new UControl.MyEventHandler(MyControl_LinesChanged)

void MyControl_LinesChanged(object sender, MyEventArgs e)
{
   throw new Exception("The method or operation is not implemented.");
}


 

Wednesday, September 20, 2006 8:56:44 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Mit WCF (Windows Communication Foundation) lassen sich Service orientierte Architekturen (SOA) implementieren. Der Vorteil gegenüber bestehenden technologien besteht darin, dass die eigentliche Schnittstelle von dem Nachrichtenformat und dem Transportweg unabhängig ist, d.h. mann kann einfach durch Konfiguration bestimmen, ob die Kommunikation über HTTP, TCP, MSMQ, Named Pipes etc. stattfinden soll und ob der Nachrichtenaustausch über SOAP/XML, Binärserialisierung etc. erfolgen soll. WCF ist bestandteil von .net 3.0

Im Rahmen eines Projektes habe ich begonnen, mich mit der WCF zu befassen. Die ersten Ergebnisse sind in dem folgenden Tutorial beschrieben. Das Dokument soll einen einfachen Einstieg in WCF bieten.

Windows Communication Foundation Tutorial.pdf (847,8 KB)
Wednesday, September 20, 2006 9:23:36 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Monday, September 18, 2006

Das Tutorial steht für C# und VB.Net zur Verfügung. Unten finden Sie den Link für die erste Folge in C#. Von dort aus können links aus der Navigation die anderen Folgen aufgerufen werden.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspnettut/html/aspnet_tutorial01_dataaccesslayer_cs.asp

Monday, September 18, 2006 8:20:57 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Sunday, September 17, 2006

10 häufige Fallstricke bi der Veröffentlichung von ASP.Net Webseiten und deren Vermeidung, zum Teil auch der technische Hintergrund werden in folgendem Artikel beschrieben:

http://www.microsoft.com/germany/msdn/library/net/aspnet/StoerungsfreiAusgefuehrteSitesDurchVermeidenDieserZehnVerbreitetenASPNETFehlerquellen.mspx?mfr=true

Sunday, September 17, 2006 9:44:47 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |  |   | 

Bei der Erstellung von UIs sollte darauf geachtet werden, dass möglichst wenig Funktionalität in der Benutzeroberfläche selbst implementiert wird. Das folgende Entwurfsmuster beschreibt eine Vorgehensweise:

http://www.microsoft.com/germany/msdn/library/architecture/EntwurfsmusterModelViewPresenter.mspx?mfr=true

Sunday, September 17, 2006 9:40:07 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Mit der BusyBoxDotNet kann man einfach eine Wartemeldung unter ASP.Net erzeugen.

http://busyboxdotnet.qsh.eu/

Sunday, September 17, 2006 8:52:27 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Mit Sancastle können XML-Kommentare aus VS 2005 als Dokumentation ähnlich wie die MSDN-Dokumentation aufbereitet werden. Nun gibt es bei CodeProjekt nun auch eine grafische Oberfläche für Sandcastle.

http://www.codeproject.com/useritems/SandcastleBuilder.asp

Sunday, September 17, 2006 8:20:04 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Saturday, September 16, 2006

Der Artikel beschreibt wie unter ASP.Net 2.0 Ressoucen eingesetzt werden und wie sich damit Web-Anwendungen lokalisieren lassen.

http://www.microsoft.com/germany/msdn/library/net/aspnet/RessourcenUndLokalisierungInASPNET20.mspx?mfr=true

Saturday, September 16, 2006 9:46:35 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Die Verwaltung von Konfigurationseinstellungen hat sich in .net 2.0 gegenüber .net 1.1 geändert. Es stehen Funktionen zum Schreiben von Konfigurationsparameter und auch benutzerspezifische Konfigurationsparameter zur Verfügung. Die Verwendung der Konfigurationeinstellungen unter .net 2.0 beschreibt der Artikel http://msdn.microsoft.com/vcsharp/default.aspx?pull=/library/en-us/dnvs05/html/SettingsCS_RL.asp

Saturday, September 16, 2006 9:40:12 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Auf der Seite Coding4Fun finden Hobby-Entwickler interessante Informationen und Beispiele (z.B. Programmierung von Spielen etc.)

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

Saturday, September 16, 2006 9:33:32 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

In einer 10-teilgen Web-Cast Serie erklärt Daniel Walzenbach wie ASP.Net Srever-Controls entwickelt werden.

http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=1032303182

Saturday, September 16, 2006 9:28:33 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Vor kurzem habe ich hier gepostet, wie man Debug-Informationen ausgeben kann. Hier noch eine kleine Ergänzung. Man kann den Debug-Informationen auch noch Informationen über die Quelldatei, das Modul und die Zeile ausgeben. Dazu dient der folgende Code:

Debug.WriteLine("Quelledatei = " + new StackFrame(0, true).GetFileName() +
"\nMethode = " + new StackFrame(0, true).GetMethod() +
"\nZeile = " + new StackFrame(0, true).GetFileLineNumber() + "\n");

Gefunden bei Dani.Net

Saturday, September 16, 2006 9:13:53 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Friday, September 15, 2006

Unter http://www.netfxguide.com/ finden sich jede Menge Links zu Webkasts, Tutorials, Artikel etc. zum Thema .Net 3.0. Die Inhalte sind in die Rubrichen WCF, WPF, WF und sonstiges gegliedert.

Friday, September 15, 2006 11:40:21 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

In einer 7-teiligen Webcast-Serie stellt Dr. Holger Schwichtenberg ASP.Net 2.0 vor

http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=118767534

Friday, September 15, 2006 7:42:54 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Thursday, September 14, 2006

Bei Christoph Schmid habe ich gerade folgenden Tipp gefunden:

 

Dass man per Pfeiltasten zwischen den eingegebenen Befehlen wechseln kann, war mir bekannt.
Aber es geht einfacher mit der F7-Taste. Dann erscheint ein Fenster, in welchem man die Befehle sieht und schnell wechseln kann.


Quelle: http://blogs.dotnetgerman.com/schmidi/PermaLink,guid,a9bace19-3447-47e2-94a1-5bb83ce10e2d.aspx

Thursday, September 14, 2006 6:35:19 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Unter MSDN gibt es einen Artikel, der einen Überblick über verschiedene Aspekte von .Net 3.0 gibt.

http://www.microsoft.com/germany/msdn/library/net/EinfuehrungInNETFramework30.mspx?mfr=true