Laden...
Avatar #avatar-3125.png
Benutzerbeschreibung
Mein Blog: https://blog.mariusschulz.com

Forenbeiträge von m0rius Ingesamt 1.002 Beiträge

28.02.2011 - 19:35 Uhr

Hallo zusammen,

Eventuell waeren auch Extensionmethods was fuer dich.

s. winSharp93s Vorschlag:

Nimm doch die Erweiterungsmethoden aus System.Linq.
Damit hast du dann etwas sehr C#-Spezifisches, was du auch schön im praxisnahen Vergleich "konventionell"-"LINQ" darstellen kannst.

Ich wäre allerdings ebenfalls für Erweiterungsmethoden. Die kann man meiner Meinung nach auch in dieser Zeit gut verstehen, wenn sie verständlich erklärt werden.

Hallo herbivore,

Aussagen über die Anzahl der Folien sind schwer zu machen — per se sind mehr als drei Folien in fünf Minuten sicher nicht zu viel. An dieser Stelle sollte man sozusagen das "Folien-SRP" einhalten und nicht zu viel in eine einzige Folie packen.

m0rius

28.02.2011 - 19:29 Uhr

Hallo reloop,

sieh dir mal die Fluent Ribbon Control Suite an. Die bietet von Haus aus Backstage-Support.

m0rius

27.02.2011 - 14:23 Uhr

Hallo Hanswurst90,

da wirst du dir selbst etwas basteln müssen. Vorgefertigt gibt es kein HTML-Steuerelement wie die editierbare ComboBox.

m0rius

26.02.2011 - 19:33 Uhr

Hallo Totenkopfschwärmer,

herzlich willkommen auf myCSharp!

Ohne deinen Enthusiasmus bremsen zu wollen — zwischen der Programmierung eines Bots und dem Verständnis von Feldern und Instanzen liegen leider Welten.
Es ist vollkommen normal, dass du nach 1 ½ Wochen keine "gescheiten" Programme schreiben kannst. Programmieren will schließlich gelernt sein, und die benötigte Zeit dafür solltest du nicht in Wochen, sondern in Monaten bzw. Jahren messen — je nach Anspruch und investierter Zeit.

Zu Beginn solltest du dir die fundamentalen Grundlagen aneignen und dafür dein C# Start Kit systematisch durcharbeiten. Sieh dir mal [FAQ] Wie finde ich den Einstieg in C#? an, dort findest du eine Menge Links und Tipps für den Anfang.

m0rius

25.02.2011 - 17:54 Uhr

Hallo hanshenkelman,

herzlich willkommen auf myCSharp!

Ich muss dich leider direkt auf [Hinweis] Wie poste ich richtig? Punkt 1.1.1 "Nicht nach Grundlagen fragen" hinweisen.

Trotzdem ein paar Tipps zur Benennung:*Vermeide die Ungarische Notation (darunter fällt bei dir der Präfix s_). *Vermeide Umlaute in deinem Code (z.B. "groß"). *Vermeide deutschprachige Bezeichner.

Nimm dir am besten mal eine Weile Zeit und lies dir die Richtlinien für Namen ein.
Ansonsten empfehle ich, dass du dir ein entsprechendes Buch ( 🛈 ) zulegst und dich systematisch in die Grundlagen einarbeitest. Die würden dir nämlich beim Verständnis deines Codes helfen — aus der statischen Methode Autostart_setzen kannst du nämlich nicht auf das nicht-statische Feld status_autostart_setzen zugreifen.

m0rius

20.02.2011 - 23:01 Uhr

Hallo David W,

kann ich nicht bestätigen — STRG+F5 schon versucht?

m0rius

20.02.2011 - 20:26 Uhr

Hallo Gumba,

hast du schon [FAQ] Flackernde Controls vermeiden / Schnelles, flackerfreies Zeichnen gelesen?

Wenn es beim Hinzufügen oder Umordnen von Controls flackert, probiert SuspendLayout/ResumeLayout.

m0rius

20.02.2011 - 20:22 Uhr

Hallo herbivore,

ein selbstschließender <a>-Tag ist W3C-Konsortium nicht erlaubt.

m0rius

18.02.2011 - 17:28 Uhr

Hallo kom2006,

du kannst die Funktion natürlich auch in einem gewissen Zeitintervall aufrufen und so beispielsweise alle 100ms aktualisieren. Wie das performance-technisch aussieht, müsstet du testen.

m0rius

18.02.2011 - 02:16 Uhr

Hallo kom2066,

nach einer kurzen Googlesuche nach c# webbrowser mouse control habe ich die Diskussion C# webBrowser Control how to get data under mouse pointer auf StackOverflow gefunden.
Hier die Antwort vom Poweruser SLaks, schlicht und ergreifend:

Call

webBrowser.Document.GetElementFromPoint(webBrowser.PointToClient(MousePosition))  

m0rius

17.02.2011 - 22:07 Uhr

Hallo CamelxDDD,

herzlich willkommen auf myCSharp!

Trotzdem muss ich dich sofort zu Beginn auf [Hinweis] Wie poste ich richtig? hinweisen.

Jedoch will es partout nicht funktionieren.
Kann mir bitte einer sagen warum?

Das ist eine denkbar ungünstige Fragestellung, s. Punkt 5 "Problem genau beschreiben, inkl. genauer Fehlermeldung". Was genau passiert bzw. passiert eben nicht?

Generell gilt: Verändere nie manuell den Code, der vom Designer erzeugt wird. Bei jeder Aktualisierung wird der nämlich mit dem neu generierten Code überschrieben.

m0rius

17.02.2011 - 18:37 Uhr

Hallo zero_x,

"lauschen" meint "einen Event-Handler für das entsprechende Event registrieren", der dann reagieren kann, wenn das Event gefeuert wurde.

m0rius

17.02.2011 - 10:18 Uhr

Hallo zusammen,

hier ein Horror von James Michael Hare, gerade auf Twitter gesehen:

Saw most awesome useless piece of legacy code at work in loop: if (strWebId == strSearchId) { bool bFound = true; bFound = false; } #WTF???

m0rius

17.02.2011 - 09:52 Uhr

Hallo zero_x,

Ich würde stattdessen lieber die Möglichkeiten von WPF ausnutzen.

die da konkret wären? Die Möglichkeit, Controls anhand ihres Namens zu finden? Ohne weitere Ausführungen ist der Hinweis – sorry – nicht so hilfreich.

Im ersten Codebeispiel von dir wird nicht geprüft, ob sich in myControlCollection nur Buttons befinden

Richtig, es können in myControlCollection auch andere Controls enthalten sein. So what 😃?

bzw. ob das jeweilige Item auch vom Typ Button ist. Es wäre besser, wenn du vor [...] prüfst, ob nicht control ein Button ist

Diese Überprüfung wäre völlig sinnlos, da ich bereits mit dem as-Operator caste. Ist control nicht vom Typ Button, enthält button den Wert null. Ausführlich wird der as-Cast im Artikel [Tipp] Casten aber richtig: Begriffe wie Cast / is / as besprochen.

m0rius

16.02.2011 - 20:59 Uhr

Hallo kkirchhoff,

ChildWindow ist von ContentControl abgeleitet und besitzt deshalb eine Content-Eigenschaft vom Typ object — es enthält somit nur ein Kindelement! Dieses ist meist ein StackPanel oder irgendein anderes Panel, dessen Kindelemente du wiederum mit der Panel.Children-Eigenschaft vom Typ UIElementCollection auslesen kannst.

m0rius

[edit]Vererbungshierarchie eingefügt.[/edit]

16.02.2011 - 20:05 Uhr

Hallo kkirchhoff,

bitte beachte [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen) und [Hinweis] Wie poste ich richtig? Punkt 1.1.1 — das sind Grundlagen.
_inRootElement ist vom Typ ChildWindow. Die foreach-Schleife kann nur über Typen iterieren, die IEnumerable implementieren, und das tut ChildWindow nicht.

m0rius

16.02.2011 - 17:20 Uhr

Hallo Tam0r,

erstelle dir ein Projekt vom Typ Klassenbibliothek (bzw. Class Library in der englischen Version von Visual Studio). Beim Kompilieren (unbedingt den Release-Modus verwenden!) wird eine .dll-Datei im Projektordner unter bin/Release/ erzeugt, die du in deinen anderen Projekten einbinden kannst.
Wenn du deine Funktionen später ergänzt oder modifizierst, tust du das nur in deiner Klassenbibliothek und tauschst in den anderen Projekten lediglich die DLL aus.

m0rius

16.02.2011 - 17:15 Uhr

Hallo kkirchhoff,

ja, das ist per Reflection möglich, aber kein gutes Design.

Besser wäre es, zu versuchen, deine Controls in einen bestimmten Typ zu casten und auf diesen stark typisierten Controls die Zielmethode aufzurufen:

foreach (Control control in myControlCollection)
{
    // Cast vornehmen
    Button button = control as Button;

    // Ist control vom Typ Button (oder vom Typ einer abgeleiteten Klasse von Button)?
    if (button != null)
    {
        // Ja, also Methode aufrufen
        button.PerformClick();
    }
}

m0rius

[edit]Kommentare hinzugefügt.[/edit]

14.02.2011 - 18:45 Uhr

Hallo ThTs,

vielleicht interessiert dich C# in Depth von Jon Skeet.

m0rius

14.02.2011 - 18:08 Uhr

Hallo zero_x,

ja, genau — tolles Feature, STRG + . ... Das funktioniert allerdings nicht für die Erweiterungsmethoden aus dem Namespace System.Linq!

m0rius

[edit]Typo[/edit]

14.02.2011 - 17:08 Uhr

Hallo reloop,

ich meine auch keine DLL, sondern einen Namespace. Hast du den Namespace System.Linq folgendermaßen in der entsprechenden Klasse eingebunden?

using System.Linq;

m0rius

14.02.2011 - 16:43 Uhr

Hallo reloop,

verweist du in einer using-Direktive auf den Namespace System.Linq?

m0rius

14.02.2011 - 14:51 Uhr

Hallo AllForOne,

sieh dir mal den Thread [FAQ] Wie finde ich den Einstieg in C#? an — dort findest du geeignete Hilfestellungen für C#-Neulinge.

m0rius

09.02.2011 - 13:26 Uhr

Hallo icolor,

was heißt denn

Und was heißt hier nach Grundlagen fragen?

? Punkt 1.1.1 heißt klar Nicht nach Grundlagen fragen — diese sollst du dir selbst erarbeiten, und das Projektmanagement von Visual Studio gehört definitiv dazu.

m0rius

09.02.2011 - 11:43 Uhr

Hallo icolor,

das sind absolute Grundlagen, s. Projektmanagement und Visual Studio 2010 » Mehrere Projekte in einer Projektmappe verwalten.
Abgesehen davon fügst du nicht deinem _Projekt _ein weiteres hinzu, sondern deiner Solution. Damit Projekt A öffentliche Member von Projekt B verwenden kann, muss B von A referenziert werden.

m0rius

07.02.2011 - 21:12 Uhr

Hallo tbr,

im Blogpost Comparing the properties of two objects via Reflection and C# habe ich unter Directly comparing values folgenden Code gefunden:

object valueA;
object valueB;

valueA = propertyInfo.GetValue(objectA, null);
valueB = propertyInfo.GetValue(objectB, null);
bool result;
IComparable selfValueComparer;

selfValueComparer = valueA as IComparable;

if (valueA == null && valueB != null || valueA != null && valueB == null)
  result = false; // one of the values is null
else if (selfValueComparer != null && selfValueComparer.CompareTo(valueB) != 0)
  result = false; // the comparison using IComparable failed
else if (!object.Equals(valueA, valueB))
  result = false; // the comparison using Equals failed
else
  result = true; // match

return result;

Hier wird auf verschiedene Vergleichsstrategien zurückgegriffen – versuch es doch mal damit.

m0rius

07.02.2011 - 20:44 Uhr

Hallo TBR,

vielleicht hilft dir die Diskussion Get property value from string using reflection in C# weiter. Ansonsten mal die anderen Suchergebnisse für Googlesuche nach c# reflection get property value durchgucken ...

m0rius

07.02.2011 - 16:54 Uhr

Hallo blr,

du rechnest dann ausschließlich mit Vektoren. Zum Addieren gibt es die statische Methode Vector2.Add(Vector2, Vector2), die zwei Vektoren addiert und das Resultat zurückgibt.
In deinem Fall würdest du die Summe von Positions- und Geschwindigkeitsvektor dem Positionsvektor zuweisen und so die alte Position aktualisieren.

Bitte setze deinen C#-Code in die ensprechenden BB-Codes [``CSHARP``] bzw. [``/CSHARP``]. Du bist ja mittlerweile auch eine Zeit lang dabei ...

m0rius

07.02.2011 - 11:10 Uhr

Hallo Th69,

die Vector2-Struktur besitzt die statische Methode Vector2.Transform(Vector2, Matrix). Diese kann wie folgt auch zum Rotieren eines Vektors um einen bestimmten Winkel verwendet werden:


// Winkelberechnung in Radiant wie gehabt:
float angleInRadians = MathHelper.ToRadians(10);

// Es wird die statische Methode Matrix.CreateRotationZ verwendet, da um die Z-Achse rotiert wird.
// Zeigt die X-Achse nach rechts und die Y-Achse nach oben, kommt die Z-Achse aus dem Monitor heraus.
Matrix rotationMatrix = Matrix.CreateRotationZ(angleInRadians);

// Berechnete Matrix-Rotation auf den Positionsvektor anwenden:
position = Vector2.Transform(position, rotationMatrix);

So kann die händische Berechnung der trigonometrischen Funktionen entfallen.

m0rius

07.02.2011 - 10:41 Uhr

Hallo Th69,

sicher wäre es eine Möglichkeit, die trigonometrischen Berechnungen und die Vektoradditionen händisch durchzuführen — allerdings enthält das XNA-Framework bereits die Vector2-Struktur, die die Eigenschaften X und Y besitzt.

m0rius

[edit]Formulierung. Etwas kryptisch gewesen ...[/edit]

07.02.2011 - 10:25 Uhr

Hallo blr,

bewege deine Fahrzeuge vektorbasiert und addiere den jeweiligen Geschwindigkeitsvektor zur derzeitigen Position, die du ebenfalls durch einen Vektor darstellst. So ist es auch nicht schwer, die Geschwindigkeiten in X- und Y-Richtung getrennt zu manipulieren.

m0rius

05.02.2011 - 16:02 Uhr

Hallo talla,

danke für die Erklärung — im ersten Moment ist das implementierte Verhalten so nicht intuitiv.

m0rius

05.02.2011 - 12:47 Uhr

Hallo ErfinderDesRades,

zugegebenermaßen war ich gerade echt baff – es lag wirklich an Label.RightToLeft!
Und nein, es wurde nicht der gesamte String rückwärts dargestellt. Hat jemand dafür eine logische Begründung?

m0rius

05.02.2011 - 12:31 Uhr

Hallo ErfinderDesRades,

in dem Fall müsste aber der gesamte String rückwärts dargestellt werden, oder?

m0rius

05.02.2011 - 12:30 Uhr

Hallo zero_x,

mein heißester Kandidat:

Wie schreibt man lesbaren Code? Wie benennt man Member am besten? Wann und wie sollten man kommentieren? Wie verwendet man Unit Tests und TDD?

Meine Zustimmung zu Entwurfsmuster von Kopf bis Fuß (von O'Reilly)!

m0rius

04.02.2011 - 16:21 Uhr

Hallo Cuin,

versucht es mal mit diesem regulären Ausdruck:

/\*(?<comment>.*?)\*/

Wenn ich dein Anliegen richtig verstanden habe, sollte er korrekt funktionieren. Für den ersten Kommentar matcht die Gruppe comment "Ein Kommentar".

m0rius

P.S: Getestet habe ich den regulären Ausdruck mit dem On-the-fly Regex-Tester: Regex-Lab von herbivore.

03.02.2011 - 21:09 Uhr

Hallo kds,

sorry, aber das sind absolute Grundlagen. Bitte eigne dir diese an.
Trotzdem: Zum Hinzufügen einer Referenz machst du einen **Rechtsklick **auf das entsprechende **Projekt **in deiner **Solution **und wählst den Punkt Add Reference... (bzw. Referenz hinzufügen...) und wählst die **DLL **aus.

m0rius

31.01.2011 - 10:47 Uhr

Hallo,

da hier drei Tage keine Antwort kam, geht das hier meines Erachtens nach nicht als Crosspost durch: Ich habe die Frage auf StackOverflow gestellt – dort wurde sie beantwortet!

m0rius

28.01.2011 - 12:20 Uhr

Hallo,

ich verwende das Table Splitting-Feature des Entity Frameworks, um in der Datenbank gespeicherte Bilder (Spaltenname: Image) meiner Tabelle News nicht automatisch bei jeder Abfrage mitzuladen. Die entsprechenden Spalten können explizit bei Bedarf nachgeladen werden.
Um an das ausgelagerte Bild zu gelangen, spreche ich die vom Entity Framework angelegte Eigenschaft NewsImage an.

Für die Model-Validierung (ASP.NET MVC-Projekt) verwende ich Data Annotations und damit verbunden Attribute wie [Required]:

public class NewsValidation
{
    [DisplayName("Titel")]
    [Required(ErrorMessage = "Pflichtfeld!")]
    public string Title { get; set; }

    /* ... */
}

Nun meine Frage: Wie kann ich die Eigenschaft NewsImage.Image mit dem [Required]-Attribut auszeichnen, um ein Bild zu erzwingen?

m0rius

27.01.2011 - 11:52 Uhr

Hallo blr,

mangelnde Erfahrung hin oder her – ein wenig Eigeninitiative kannst du schon zeigen: http://de.wikipedia.org/wiki/Zune.

m0rius

27.01.2011 - 10:45 Uhr

Hallo blr,

ohne Erfahrungen in der Spieleprogrammierung innerhalb von drei Wochen ein Spiel schreiben, das netzwerkfähig ist und anspruchsvoller als Risiko?
Was hast du denn für Erfahrungen mit C# und der Programmierung allgemein? Ohne dich demotivieren zu wollen – so sehe ich nämlich momentan schwarz.

m0rius

25.01.2011 - 11:30 Uhr

Hallo HiGHteK,

vielen Dank, das Add-On kannte ich noch nicht. Habe mir jetzt für die Codeblöcke überall Consolas eingestellt und die Farben dem Farbschema von Visual Studio angepasst – sieht sehr viel besser aus!

Hier die CSS-Styles für Stylish für alle Interessierten:

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("www.mycsharp.de") {
    code {
        font-family: Consolas;
        font-size: 10pt;
    }

    .xmltag {
        color: #a31515 !important;
    }

    .xmlattr {
        color: #ff0000 !important;
    }

    .xmlcomment {
        color: #008000 !important;
    }

    .xmlstring {
        color: #0000ff !important;
    }
}

m0rius

24.01.2011 - 20:29 Uhr

Hallo herbivore,

ich kenne die Beweggründe nicht, aus denen sich Microsoft für die abweichende Farbgebung entschieden hat. Allerdings kann man nicht als Argument anführen, dass eine andere Sprache – und C# und XAML sind nunmal zwei verschiedene Sprachen – ein anderes Farbschema verwendet. Schließlich stellen wir hier Schlagwörter auch nicht lila und fett dar, nur weil es Eclipse für Java so macht.

Lange Rede, kurzer Sinn: Ich bin der Meinung, dass man, welche Konvention auch immer verwendet wird, und die von Visual Studio ist die gängigere, diese beibehalten sollte — stick to it.

m0rius

24.01.2011 - 20:01 Uhr

Hallo herbivore,

chic, danke für die Änderung – bereits jetzt ist XAML-Markup deutlich lesbarer geworden!

Ich würde mich trotzdem freuen, wenn du dir die restliche Farbgebung für Tag-Namen und Strings nochmal durch den Kopf gehen lassen würdest. Der Großteil der Forenbenutzer wird Visual Studio verwenden und demnach dessen Farbschema gewöhnt sein.
Es ist selbstverständlich dein gutes Recht, wenn dir braune Tags und blaue Strings nicht gefallen – andererseits wird es genau so viele Benutzer geben, denen es andersherum ergeht. Daher wäre ich dafür, sich der XAML-Farbkonvention von Visual Studio anzupassen und der Konvention zu folgen, um die Umstellung vermeiden zu können.

m0rius

24.01.2011 - 18:10 Uhr

Hallo herbivore,

bis auf das bananengelb sind die von ErfinderDesRades verwendeten Farben die Standardfarben von Visual Studio.
:::{style="color: red;"}Rote Attribute){red} fände ich ebenfalls sehr schön.

m0rius

24.01.2011 - 15:04 Uhr

Hallo MarsStein,

vielen Dank für diesen Link – ich kannte die gesamte Google webmaster-zentrale bisher noch nicht!

m0rius

24.01.2011 - 14:33 Uhr

Hallo,

wie kann ich eine Website, die Breadcrumb-URLs wie z.B. http://www.augustinerschule.de/startseite/organisation/foerderverein/beitritt besitzt, so optimieren, dass in den Google-Suchergebnissen der Breadcrumb entsprechend klickbar dargestellt wird?

m0rius

24.01.2011 - 10:09 Uhr

Hallo Tomit,

vielen Dank für deinen Verbesserungsvorschlag!
Ich werde mal sehen, wann und ob ich dazu komme, die Berechnung zu optimieren – zur Zeit habe ich ziemlich viel um die Ohren.

m0rius

17.01.2011 - 22:56 Uhr

Hallo ErfinderDesRades,

ich hätte dir gerade die IsSynchronizedWithCurrentItem-Property vorgeschlagen, bis ich gemerkt habe, dass die TreeView diese nicht besitzt. Vielleicht bringt dich die Diskussion Where is IsSynchronizedWithCurrentItem property (or equivalent) for a TreeView? weiter ...

m0rius

17.01.2011 - 22:22 Uhr

Hallo ErfinderDesRades,

ohne es getestet zu haben: Hast du mal versucht, den Modus des Bindings explizit auf OneWay zu setzen? Dass die Quelle des Bindings nur einmalig einen Wert übermittelt, klingt nach dem Modus OneTime. (Wie gesagt, das ist spekulativ.

m0rius