Kategorie: C#

C# / WPF – Drücken von mehreren Tasten gleichzeitig

Hallo,
hier zeige ich mal kurz wie man in C# / WPF sehr einfach in einem KeyEvent die gedrückten Tasten gezielt abfragen kann.


if (e.Key == Key.C && Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.LeftShift))
{
   MessageBox.Show("Strg+Shift+C wurde gedrückt");
}

In diesem Beispiel wird die Tastenkombination Strg+Shift+C abgefragt.

C# Einen Stream als Datei speichern

Hallo Leute,
hier ein Snippet wie man in C# einen Stream als Datei speichern kann:

        private void WriteStreamToFile(Stream stream, string targetPath)
        {
            using (FileStream fileStream = System.IO.File.Create(targetPath, (int)stream.Length))
            {
                byte[] bytesInStream = new byte[stream.Length];
                stream.Read(bytesInStream, 0, (int)bytesInStream.Length);
                fileStream.Write(bytesInStream, 0, bytesInStream.Length);
            }
        }

Der Aufruf der Methode sieht dann wie folgt aus:

     WriteStreamToFile(stream, "D:\\test.pdf");

Implementierung des INotifyPropertyChanged Interfaces

Hallo zusammen,

wenn man mit WPF arbeitet und Steuerelement an ein Model binded, ist man meist dem Problem ausgesetzt, dass sich die Oberfläche nicht automatisch aktualisiert wenn sich das Model im Hintergrund ändert. Allerdings reagiert das UI auf die Implementierung des INotifyPropertyChanged Interfaces und das sieht so aus:

public class Person : INotifyPropertyChanged
{
}

Anschließend muss noch das Event von einer Property aus gefeuert werden, an die das View oder Steuerelement gebinded wurde.


public string Firstname
{
  get
  {
    return firstname;
  }
  set
  {
    if (value == firstname)
    {
      return;
    }

    firstname = value; 
    NotifyPropertyChanged("Firstname");
 }


public event PropertyChangedEventHandler PropertyChanged;

       
 private void NotifyPropertyChanged(String propertyName = "")
 {
    if (PropertyChanged != null)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
 }

C# extension methods (Erweiterungsmethoden)

Hallo zusammen,

Es gibt eine super praktische Möglichkeit in C#, die beispielsweise bisher noch nicht in Java implementiert wurde.

In vielen Projekten haben mir die extensions methods schon weitergeholfen.

Das Prinzip, welches dahinter steckt, ist einfach erklärt. Diese Methoden sind Erweiterungsmethoden von beliebigen Klassen.

Wie das funktioniert möchte ich euch an einem simplen string Konsolen Beispiel erläutern.

Das ist meine Program.cs

class Program
    {
        static void Main(string[] args)
        {
            string myString = "Hallo";

            Console.WriteLine(myString.DoSomeThingCrazy());
            Console.ReadLine();
        }
    }

Die Vermutung liegt nahe, dass Microsoft wohl keine Methode namens DoSomeThingCrazy in der Klasse String implementiert hat. Schuldig, das war ich ;-), mit Hilfe einer neuen Klasse

 public static class StringExtensions
    {
        public static string DoSomeThingCrazy (this string s)
        {
            return s + s + s + s;
        }
    }

Wichtig dabei ist, dass sowohl die Klasse als auch die Methode(n) static ist und das Schlüsselwort this vor dem Datentyp steht um den es sich handelt.