Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von 7.e.Q
Thema: [gelöst] RoutedCommand/CommandBinding: CanExecute Handler wird nicht ausgeführt?
Am im Forum: GUI: WPF und XAML

Okay, hab die Lösung gefunden:


CommandManager.RegisterClassCommandBinding(OwnerType, new CommandBinding(Command, OnCommand, OnCanExecute));

Das type-Argument, in meinem Beispiel OwnerType genannt, muss dem Typ des CommandSource entsprechen (oder einer dessen übergeordneten Klasse).

Laut MSDN muss OwnerType "die Klasse [sein], für die die commandBinding registriert werden soll."

Ah ja. Gut, dass das also die Klasse des Controls sein muss, die das Command zugewiesen bekommt, das war mir nicht bewusst.

Thema: Wie Methode strukturieren, wenn der Rückgabewert von einer Abfrage abhängt?
Am im Forum: Rund um die Programmierung

Gut zu wissen

Thema: Wie Methode strukturieren, wenn der Rückgabewert von einer Abfrage abhängt?
Am im Forum: Rund um die Programmierung

Sorry für OT, aber Verständnisfrage: wenn ich aus einem Try-Block mit return aussteige, wird der Finally-Block also noch durchlaufen, bevor die Methode letztendlich zurückkehrt?

Thema: Wie Methode strukturieren, wenn der Rückgabewert von einer Abfrage abhängt?
Am im Forum: Rund um die Programmierung

Äh, "finally"? Das gibt's doch nur in Verbindung mit 'nem Try-Catch-Block oder? Oder hab ich was verpasst?

Thema: Wie Methode strukturieren, wenn der Rückgabewert von einer Abfrage abhängt?
Am im Forum: Rund um die Programmierung

Bei komplexeren Methoden muss man allerdings aufpassen, dass man wirklich an jedem möglichen Ausstiegspunkt ein return baut und vorher auch aufräumt, falls nötig.

Ich erinnere mich an meine zeit als C++ Entwickler, wo dann Speicherlecks entstanden, weil von meinen werten Kollegen an etlichen Stellen in riesigen unübersichtlichen Methoden returns, aber nicht überall deletes waren. Da blieben dann am Anfang der Methoden mit new angelegte Objekte einfach im Speicher liegen.

Okay, bei C# ist das nicht mehr so tragisch wegen des GC. Aber auch hier kann man damit Speicherlecks bauen, wenn man wild IDisposable Objekte anlegt (beim Arbeiten mit GDI+ zum Beispiel).

Thema: Wie Methode strukturieren, wenn der Rückgabewert von einer Abfrage abhängt?
Am im Forum: Rund um die Programmierung

Gut, nach Herbivores Vorgehensweise kann man die "Junction" dann natürlich auch so bauen, was die Lesbarkeit tatsächlich noch erhöht:


SomeRetVal Junction(Whatever b)
{
        switch(b)
        {
                case Whatever.FooA:
                {
                        return DoSomeThingA();
                }
                case Whatever.FooB:
                {
                        return DoSomeThingB();
                }
                default:
                {
                        return DoSomeThingDifferent();
                }
        }
        return null; // wird auch wieder niemals erreicht. Sollte zumindest eine Compiler-Warning geben
}

Thema: Wie Methode strukturieren, wenn der Rückgabewert von einer Abfrage abhängt?
Am im Forum: Rund um die Programmierung

In dem Fall würde ich wohl eine - ich nenn's mal - "Junction" Methode schreiben:



SomeRetVal Junction(Whatever b)
{
        SomeRetVal ret = null;
        switch(b)
        {
                case Whatever.FooA:
                {
                        ret = DoSomeThingA();
                        break;
                }
                case Whatever.FooB:
                {
                        ret = DoSomeThingB();
                        break;
                }
                default: 
                {
                        ret = DoSomeThingDifferent();
                        break;
                }
        }
        return ret;
}

Finde ich persönlich am schönsten (wie gesagt, Glaubensfrage). Die ganzen DoSomeThing... Methoden würde ich dann in eine #region packen.

Thema: [gelöst] RoutedCommand/CommandBinding: CanExecute Handler wird nicht ausgeführt?
Am im Forum: GUI: WPF und XAML

Hi Leute,

hab mal wieder ein kleines Problem. Eigentlich sollte doch bei folgendem Code bei einer Anbindung an das RoutedCommand der besagte CanExecuteRoutedEventHandler ausgeführt werden, richtig?


        private static void InstallCommand(ref RoutedCommand Command, string Name)
        {
            Command = new RoutedCommand(Name, typeof(TCAMSettings));
            CommandManager.RegisterClassCommandBinding(typeof(TCAMSettings), new CommandBinding(Command, OnCommand, OnCanExecuteCommand));
        }

Die Methode rufe ich in einem statischen Constructor so auf:


        static TCAMSettings()
        {
            InstallCommand(ref mAddDeviceCommand, "AddDeviceCommand");
            InstallCommand(ref mRemoveDeviceCommand, "RemoveDeviceCommand");
        }

Wobei...


        private static readonly RoutedCommand mAddDeviceCommand;
        private static readonly RoutedCommand mRemoveDeviceCommand;

        public static RoutedCommand AddDeviceCommand { get { return mAddDeviceCommand; } }
        public static RoutedCommand RemoveDeviceCommand { get { return mRemoveDeviceCommand; } }

und...

<Button Command="{x:Static local:TCAMSettings.AddDeviceCommand}" Content="Click me!" />

und...


        static void OnCanExecuteCommand(object sender, CanExecuteRoutedEventArgs e)
        {
            e.CanExecute = true;
        }

        static void OnCommand(object sender, ExecutedRoutedEventArgs e)
        {
                // TODO: Inhalt basteln
        }


Bloß wird OnCanExecuteCommand nie ausgeführt. Sagt jedenfalls der Debugger. Und der Button, an den ich das Command gebunden hab, ist immer ausgegraut.

Was fehlt hier (außer Ordnung im Beitrag)?

Danke!

Grüße,
Hendrik

//edit [14:43]: Ich muss vielleicht noch dazu sagen, dass TCAMSettings, also die Owner-Class des Commands von nichts explizit abgeleitet ist. Sie ist also kein Control oder sowas. Ist das von Belang?

Thema: Wie Methode strukturieren, wenn der Rückgabewert von einer Abfrage abhängt?
Am im Forum: Rund um die Programmierung

Wobei Möglichkeit 2 unsinnig ist, da das letzte Return definitiv nie erreicht würde. Das müsste dir eigentlich sogar der Compiler sagen.

Daher würde ich die Methode so aussehen lassen:


string Foo(bool b) {
    return (b ? "baz" : "bar");
}

Thema: [CustomControl] eingebetteter Button - Click-Event?
Am im Forum: GUI: WPF und XAML

Es ist ein Browse Button, der ein OpenFileDialog aufrufen soll, dessen Rückgabe dann in einer ebenfalls eingebetteten Textbox hinterlegt werden soll (über eine an die Textbox gebundene DependencyProperty).

Dieser Vorgang soll innerhalb des Controls ablaufen, damit ein Benutzer des Controls das nicht jedesmal selbst neu verdrahten muss.

Commands sind wohl der gangbare Weg, das muss ich mir mal genau anschauen.

Thema: [CustomControl] eingebetteter Button - Click-Event?
Am im Forum: GUI: WPF und XAML

Hi Leute,

wahrscheinlich 'ne Frage, die schon häufiger gestellt wurde, aber ich finde gerade keine Antwort darauf:

wie verdrahte ich in einem CustomControl das Click-Event eines darin eingebetteten Buttons mit einer Methode innerhalb der CodeBehind Datei?

Danke.

Grüße,
Hendrik

Thema: Mein TrueCrypt Automounter: Festplatten abfragen?
Am im Forum: Rund um die Programmierung

Es kommt eine FileLoadException in der System.Management.dll und es scheint, als ob ein anderes Programm irgendwie die WMI Abfrage blockiert.

//edit: die Abfrage blockiert, wenn TrueCrypt Laufwerke gemountet sind. Ich teste noch mal, ob es bei Containern, bei Festplatten/Partitionen oder bei beidem auftritt...

//edit: also es liegt an gemounteten TrueCrypt Partitionen. Wenn ich nur Container gemountet hab, kommt keine Exception.

Thema: Mein TrueCrypt Automounter: Festplatten abfragen?
Am im Forum: Rund um die Programmierung

Uihah, danke.

Ja, WMI ist wohl der einfachste Weg. Wenn ich nicht das Problem hätte, dass bei einer Abfrage von Win32_DiskPartition die System.Management.dll eine Exception wirft. Denn genau diese Abfrage brauche ich leider. Sie gibt mir genau das zurück, was ich benötige.

Sehr eigenartiges und mal wieder ärgerliches Verhalten. Warum können Computer nicht einfach mal das machen, was man von ihnen verlangt? Ich weiß, die Dinger sind dazu gedacht, Probleme zu lösen, die man ohne sie gar nicht hatte.

Thema: WMI Problem Win32_DiskPartition - FileLoadException in System.Management.dll?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke für's Testen!

Sollte ich vielleicht noch dazu sagen:

OS: Vista Ultimate x64 auf neuestem Stand
Framework: .NET 3.5 auf neuestem Stand
CPU Setting: sowohl x86 als auch x64, sowohl Debug als auch Release

Mal schauen, ob das nach einem System-Neustart weg ist. Ich hasse solche kryptischen Blockingpoints...

Wer noch Ideen hat, gern her damit! ;)
Danke

Thema: WMI Problem Win32_DiskPartition - FileLoadException in System.Management.dll?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi Leute,

kann das folgende mal eben jemand bei sich ausprobieren? Funktioniert bei mir nur beim 1. Schleifendurchlauf. Da bekomme ich die Partition wie ich sie haben will. Aber beim 2. Schleifendurchlauf bekomme ich die Fehlermeldung

Zitat
A first chance exception of type 'System.IO.FileLoadException' occurred in System.Management.dll

Hier der Code, der die Meldung auslöst:


                ManagementScope tScope = new ManagementScope(@"\\.");
                ObjectQuery tQry = new ObjectQuery("select * from Win32_DiskPartition");

                ManagementObjectSearcher tSearcher = new ManagementObjectSearcher(tScope, tQry);
                ManagementObjectCollection tColl = tSearcher.Get();

                foreach(ManagementObject tObj in tColl)
                {
                    Console.WriteLine(@"Partition: \Device\Harddisk{0}\Partition{1}", tObj.GetPropertyValue("DiskIndex"), tObj.GetPropertyValue("Index"));
                }

Kriegt ihr den Fehler auch?

Wo ist das Problem?

Danke!!!

Grüße,
Hendrik

Thema: Mein TrueCrypt Automounter: Festplatten abfragen?
Am im Forum: Rund um die Programmierung

Hi Leute,

da mit die Funktionalität der meisten Automounter für TrueCrypt nicht 100% zusagt, möchte ich mir so'n Teil selber drechseln.

Ich brauche dafür die Liste aller im Gerät verbauten Festplatten samt Partitionen. Dies lässt sich sicher irgendwie abfragen.

Da Windows Vista gern mal die Reihenfolge der Festplatten verdreht, also eine bestimmte Festplatte mal \Device\Harddist1 und mal \Device\Harddisk4 sein kann, brauche ich irgendeine Information mit der ich die Festplatte sauber identifizieren kann, egal an welchem Strang sie hängt, und darüberhinaus einen Weg, um aus diesem Identifier dann den \Device\Harddisk... String zu machen.

Hat da jemand 'ne zündende Idee für mich?

Danke!

Grüße,
Hendrik

Thema: Rechte Maustaste gedrückt halten
Am im Forum: GUI: Windows-Forms

Ach so! Ich dachte, er bastelt an einem eigenen Spiel... man man, wer lesen kann, der ist klar im Vorteil.

Gut, dann vergesst meinen Vorschlag!

Thema: Rechte Maustaste gedrückt halten
Am im Forum: GUI: Windows-Forms

Ja, du bewegst die Kamera um den Char doch anhand der Mausposition, richtig?

Dann bewege sie nicht absolut anhand der Koordinaten der Maus, sondern relativ anhand des Koordinaten-Deltas. Und wenn das Delta zu groß ist (Maus-Sprung rechter Rand -> linker Rand), bewegst du sie nicht.

Thema: Rechte Maustaste gedrückt halten
Am im Forum: GUI: Windows-Forms

Du könntest beim Verschieben der Kamera ein Delta zwischen den alten und den neuen Mauskoordinaten abfragen, und wenn dieses zu groß ist, einfach keine Verschiebung der Kamera vornehmen.

Thema: Über Strings auf Properties zugreifen möglich?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Benutz ich zum Beispiel, um Responses von XML-RPC automatisch in Objekte umzucasten. Da bekomm ich die Objekt-Properties ja auch quasi als String. Mit Reflection funktioniert das gut.

Thema: try / lock
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Keine Gewähr auf Richtigkeit: da ja aus dem Scope von lock() ausgestiegen wird, wenn auch durch eine Exception... nun ja... wie verhält es sich denn, wenn man in lock() ein return macht? Da müsste das Objekt doch auch wieder freigegeben werden, oder?

Thema: Keinen Pixelzugriff auf BitmapImage?
Am im Forum: GUI: WPF und XAML

Gibt Bitmap Manipulationsklassen... moment...

da zum Beispiel: http://www.koders.com/csharp/fid6CB7C8C7E03A6E0FCE7B30E360E77F0AF6B23DF0.aspx

Um daraus das Bitmap Object zu bekommen, das du für die folgende Methode brauchst, musst du aus dieser Klasse _bitmap nach außen führen.

Und um dann aus einem Bitmap Object eine BitmapSource zu machen, nimmst du das da (hab ich als Extension Method für Bitmap realisiert):


        [DllImport("gdi32.dll")]
        public static extern bool DeleteObject(IntPtr Handle);

        public static BitmapSource AsBitmapSource(this Bitmap Source)
        {
            IntPtr hBitmap = Source.GetHbitmap();
            BitmapSource output = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

            DeleteObject(hBitmap);
            return output;
        }

Hoffe, dass ich dir damit helfen konnte.

Thema: Code aufteilen
Am im Forum: GUI: WPF und XAML

Du kannst den Inhalt der Docks jeweils als eigenständiges UserControl anlegen.

Thema: [Artikel] Delegaten, anonyme Methoden, Lambda-Ausdrücke & Co.
Am im Forum: Artikel

Danke für die Ausführungen. Ich verneige mich vor dir!

Thema: [erledigt] Frage: => Operator [Antwort: Lambda-Operator]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Naja, mich reizt sowas immer.

Eines meiner größten Hobbies ist es, Programmiersprachen zu lernen, weshalb ich auch jahrelang Softwareentwickler war und so einige Sprachen oberflächlich beherrsche.

Leider hatte ich an meinem Arbeitsplatz nie so recht die Gelegenheit, mal in die Tiefen der C# Programmierung einzusteigen. Das ging bisher immer nur hobbymäßig zuhause oder wenn ich mal wieder Zeit hatte, was privates am Arbeitsplatz zu programmieren; das fiel dann unter Weiterbildung. :)

Man muss ja alles mal gemacht haben, um mitreden zu können.

Thema: [erledigt] Frage: => Operator [Antwort: Lambda-Operator]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

8o

oooooookay. Expression Trees... Ich glaub, ich geh mal ein bisschen C# lernen. X(

Thema: [erledigt] Frage: => Operator [Antwort: Lambda-Operator]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Danke, den Begriff hab ich gesucht. Perfekt!

Thema: [erledigt] Frage: => Operator [Antwort: Lambda-Operator]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi Leute,

kann mir jemand 'n Link zu 'ner Erklärung des/der => Operators/Operatoren geben (Plural, sofern mehrere Bedeutungen vorhanden)? Über Google und die Board-Suche kann ich nichts finden, da man da nicht explizit nach '=>' suchen kann.

Ich kenne eine Verwendung des Operators aus dem Kontext anonymer Methoden



blubbObject.BlubbEvent += (sender, e) => 
{
    doSomethingBlubb();
};


Wie nennt man den/die Operator/en im allgemeinen Sprachgebrauch? Wofür verwendet man ihn noch?

Danke!

Grüße,
Hendrik

Thema: Silverlight 3 & Expression Blend 3 verfügbar!
Am im Forum: Szenenews

Hast du auch die VS Tools (de-)installiert?

Thema: [Silverlight 3] DataForm.Fields "The attachable property 'Fields' was not found in type 'DataForm'"?
Am im Forum: GUI: WPF und XAML

Hi nochmal,

sollte DataForm nicht eine Property namens Fields haben, über die man die Darstellung der einzelnen Datenfelder festlegen kann? Ich finde die gerade nicht.

Grüße,
Hendrik