Wenner-Online, XLDev

private Homepage

mcts on sql server 2005 mcp on sql server 2000 1und1
Hier stelle ich meine "kleine" Sammlung von C# und anderen .NET Projekten zur Verfügung.
Der Code bassiert i.d.R. auf dem .NET Framework 3.5.
Weitere Vorschläge und/oder Anregungen nehme ich gerne entgegen.

typeeine hierarchische Liste flach klopfen

25.12.2011 posted by fwenner

In diesem Beispiel möchte ich euch Zeiten wie man eine hierarchische Liste (z.B. Items beim TreeView) vollständig in eine flache Liste überführen kann. Zum Einsatz kommt dazu dabei: Generics, Extender-Methode und LINQ.

public static IEnumerable<T> Flatten<T>(
  this IEnumerable<T> source,
  Func<T, bool> selectorFunction,
  Func<T, IEnumerable<T>> getChildrenFunction)
{
  var flattenedList = source.Where(selectorFunction);
  foreach (TSource element in source)
  {
    flattenedList = flattenedList.Concat(
      getChildrenFunction(element).Flatten(selectorFunction, getChildrenFunction)
    );
  }
  return flattenedList;
}

typeDen Wert eines Objektes in eine Zahl oder Text umwandel (inkl. NULL / DBNULL)

22.04.2011 posted by fwenner

Mit diesen beiden Extender Methoden ist es möglich den Wert eines beliebigen Objektes in eine Zahl oder einen Text zu konvertieren.
Für die Fälle von NULL, DBNULL sowie im Fehlerfall wird der Standardwert zurückgeliefert.
Weitere Extender für andere Datentypen können analog umgesetzt werden.
public static int ToInt32Value(this object o)
{
  if (o == null || o == DBNull.Value)
    return 0;
  try
  {
    return Convert.ToInt32(o);
  }
  catch
  {
    return 0;
  }
}

public static string ToStringValue(this object o)
{
  if (o == null || o == DBNull.Value)
    return String.Empty;
  try
  {
    return Convert.ToString(o);
  }
  catch
  {
    return String.Empty;
  }
}

typeIst ein Feld in einem SqlDataReader vorhanden?

22.04.2011 posted by fwenner

Mit dieser Extender Methode für C# kann ermittelt werden ob ein Feld mit einem bestimmten Namen in einem SqlDataReader vorhanden ist.
public static bool FieldExists(this SqlDataReader reader, String FieldName)
{
  if (reader == null)
    return false;
  if (String.IsNullOrEmpty(FieldName))
    return false;
  try
  {
    return (reader.GetOrdinal(FieldName) != -1);
  }
  catch
  {
    return false;
  }
}

typein einem Bild einen Text/Branding (oben oder unten) hinzufügen

15.05.2010 posted by fwenner

Wenn Sie dynamisch Text in ein Bild einfügen möchten, können Sie hier sehen was Sie dazu benötigen
public enum eGraficAddTextPos  
{
Oben = 1,
Unten = 2
}
public static Image AddText(Image oImage, Font oFont, string sText, eGraficAddTextPos oPos)
{
  try
  {
    Graphics oGrafic = Graphics.FromImage(oImage);
    oFont = new Font("Arial", 10);
    if(oPos == eGraficAddTextPos.Unten)
    {
      oGrafic.FillRectangle(Brushes.Black, new Rectangle(0, oImage.Height - 18, oImage.Width, 18));
      oGrafic.DrawString(sText, oFont, Brushes.White, new Point(0, oImage.Height - 18));
    }
    else
    {
      oGrafic.FillRectangle(Brushes.Black, new Rectangle(0, 0, oImage.Width, 18));
      oGrafic.DrawString(sText, oFont, Brushes.White, new Point(0, 0));
    }
  }
  catch { }
  return oImage;
}

typeHyperlink aufrunfen, kann eine Datei oder eine WebAdresse sein

15.05.2010 posted by fwenner

Mit dieser Funktion können Sie einen Hyperlink oder eine Datei mit ihrem Standatdprogramm öffnen
public static void GoToHyperLink(string vsLink)
{  
  try   
  {    
    System.Diagnostics.Process oApp = new System.Diagnostics.Process();    
    oApp.StartInfo = new System.Diagnostics.ProcessStartInfo(vsLink);    
    oApp.Start();    
    oApp.Dispose();  
  }  
  catch  { }
}

typefeststellen ob Code auf XP oder höher ausgeführt wird

15.05.2010 posted by fwenner

Mit diesem Codeblock können Sie feststellen ob dieser unter einem Betriebssystem >= XP ausgeführt wird
public static bool IsWindowsXPOrAbove
{
  get
  {
    OperatingSystem system = Environment.OSVersion;
    bool runningNT = (system.Platform == PlatformID.Win32NT);
    return runningNT && system.Version.CompareTo(new Version(5, 1, 0, 0)) !=0;
  }
}