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 MarsStein
Thema: Wie kann man ein ResourceDictionary testen
Am im Forum: GUI: WPF und XAML

Hallo,

hilft Dir das hier?
Can't load ResourceDictionary from within an UnitTest Project

Gruß, MarsStein

Thema: TextBox readonly machen, falls bestimmtes Item ausgewählt
Am im Forum: GUI: WPF und XAML

Hallo,

es gibt einen Unterschied zwischen IsReadOnly und IsEnabled.
Wenn letzteres auf false steht, sollte man der TextBox das auch ansehen.

Gruß, MarsStein

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hallo pinki,

die Lösung ist korrekt - du bist dran und darfst die nächste Aufgabe stellen

Kurz zur Erklärung: Man braucht ja einen Typen der null und doch nicht null ist. Genau das liefert ein Nullable<T>. Hat dieses keinen Wert, wird es beim Boxing zu object tatsächlich null.
Alle anderen hier aufgerufenen Funktionen sind virtual, und beim Aufruf muss kein Boxing stattfinden - bis auf GetType, das nur in object implementiert und nich virtual ist. Deshalb verhält sich dieser spezielle Aufruf anders.

Gruß, MarsStein

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hallo zusammen,

Zitat von gfoidl
Mir fällt keine neue Aufgabe ein, daher trete ich dieses Recht gerne an dich ab.

Ist ja schon etwas länger her. Hier also nochmal eine Aufgabe, was ganz kurzes.

Gegeben ist folgende Methode:

        static void DoSomething<T>(T input)
        {
            Console.WriteLine(input.ToString());
            Console.WriteLine(input.GetHashCode());
            Console.WriteLine(input.Equals(default(T)));
            try
            {
                Console.WriteLine(input.GetType());
            }
            catch(NullReferenceException)
            {
                Console.WriteLine("NullReferenceException caught");
            }
        }

Aufgabe: Die Methode soll so aufgerufen werden, dass innerhalb des catch-Blocks die Zeile "NullReferenceException caught" ausgegeben wird. Die Methode darf dabei nicht verändert werden.

Viel Spaß beim knobeln!

MarsStein

EDIT: MrSparkle hat mich freundlicherweise darauf hingewiesen, dass die Lösung sehr leicht im Internet zu finden ist - das ist hier nicht das Ziel. Denkt lieber selbst drüber nach, und nehmt euch selbst und anderen nicht den Spaß an der Sache - es ist auch wirklich nicht besonders schwierig

Thema: Live Review mit dem .NET Team
Am im Forum: Szenenews

Hallo zusammen,

also viellecht habe ich da was grundsätzlich missverstanden - aber ich kann mich mit dem Gedanken überhaupt nicht anfreunden, dass spezielle Prozessorfeatures eines speziellen Herstellers sich bis auf die Sprache C# durchdrücken.

Warum sollte man für Intel hier eine Extrawurst braten? Solche Dinge gehören meiner Ansicht nach ausschließlich in den Jitter, und sonst nirgendwohin. Und bis es soweit ist, dass es im Jitter integriert werden kann, sollte man IMO da die Finger davon lassen.

Als Sprache sollte C# jedenfalls in meinen Augen von solch proprietärem Zeugs verschont bleiben.
Naja, mal schauen was sie draus machen...

Gruß, MarsStein

Thema: Visual Studio 2008 unter XP mit Net Framework 4.0
Am im Forum: Grundlagen von C#

Hallo,

Zitat von -Dirk-
Diese Reactive Extensions für 3.5 kennst du da ein download-link?
Nein. Die direkten Download-Links auf den Microsoft-Seiten sind tot.
Scheint es nur noch bei nuget zu geben, oder Du musst selbst suchen - aber wie ich bereits schrieb, wirst Du aller Wahrscheinlichkeit nach auf weiter Probleme stoßen.
Wenn Du diesen Plan weiter verfolgst, klinke ich mich an der Stelle wieder aus.

Gruß, MarsStein

Thema: Visual Studio 2008 unter XP mit Net Framework 4.0
Am im Forum: Grundlagen von C#

Hallo,

Zitat von -Dirk-
2008 unterstützt regulär nur Net 3.5 (oben im ersten Beitrag angeblich durch Update das ich aber nicht verstehe auf Net 4.0 erweiterbar).
Da hast Du was falsch verstanden.
VS 2008 unterstützt kein .NET 4.0. Punkt.

Wenn Du die Reactive Extensions für 3.5 installierst, bekommst Du einige Features, die erst mit .NET 4 kamen, für 3.5 nachgeliefert - mit einer Erweiterung auf .NET 4 hat das recht wenig zu tun.

Da wirst früher oder später außer System.Threading.Tasks sicher noch auf einige andere Dinge stoßen, die in Deinem 2008 nicht funktionieren, wenn dein Lehrmaterial und Beispiele auf .NET 4 basieren.

Also entweder, wie LaTino schreibt, dementsprechenden mit älterem Material/Beispielen arbeiten, oder eben eine neuere VS Version benutzen (was die deutlich sinnvollere Lösung wäre). Andernfalls sind weitere Probleme schon vorgezeichnet.

Gruß, MarsStein

Thema: Auswertung und Feedback zur DevOps-Umfrage
Am im Forum: Smalltalk

Zitat von LaTino
Eigentlich ist das genau anders herum, denn der Test existiert vor der Methode.
Wenn man Test Driven entwickelt, ja. Sonst nicht.
Für mich persönlich ist TDD nun nicht gerade ein heiliger Gral. Daher würde ich dieser Aussage nicht die Richtigkeit, aber doch die Allgemeingültigkeit absprechen.

Gruß, MarsStein

Thema: ASP.NET WebForms GridView mit fixem header
Am im Forum: Web-Technologien

Hallo,

Zitat
um 18px zu gross angezeigt (daher das "-18" im Code)
Vorsicht! Schau Dir lieber genau an, wo der Grund für dieses Verhalten liegt (wahrscheinlich CSS, wie Abt schreibt, ggf. aber auch borders/paddings etc.).

Mit solchen magischen Konstanten kannst Du Glück haben - meiner Erfahrung nach gibt sowas aber meistens unterschiedliche Ergebnisse in verschiedenen Browsern...


Gruß, MarsStein

Thema: ASP.NET WebForms GridView mit fixem header
Am im Forum: Web-Technologien

Hallo,

schau mal in Fixed Table Header Atop Scrollable GridView in ASP.NET und dem dort verlinkten Artikel Scrollable GridView with Fixed Headers in ASP.Net

hth

Gruß, MarsStein

Thema: In C# einen externen File-Server ansteuern, Dokumente ausgeben und Uploaden
Am im Forum: Web-Technologien

Hallo,

um mal die letzte Frage zu beantworten, ob der gefundene Code verwendet werden kann:
Aller Wahrscheinlichkeit nach nicht - es sei denn, alle Deine Dokumente sind in ASCII - das Stück Code arbeitet mit diesem Encoding. Du müsstest aber binär arbeiten, wenn das mit verschiedenen Dokumettypen klappen soll.

data = new Byte[256];
halte ich für eine Dokumenten übertragung auch nicht gerde für eine geeignete Größe.

Aber mal im Ernst: Ihr wollt eine eigene - dann auch möglicherweise fehlerbehaftete - Lösung schreiben, um ein Problem zu lösen, das in meinen Augen gar nicht existiert, bzw. mit vorhandenen Technologien viele einfacher zu lösen ist. Wo ist der Unterschied, die Firewall für die Netzwerkfreigabe aufzumachen, oder für einen eigenen Service?

Absichern dann wie Abt schreibt über Benutzerrechte.
Vielleicht muss tDu auch gar nicht das Laufwerk mappen (falls das das Problem ist), sondern kannst über UNC-Pfad zugreifen.

Gruß, MarsStein

Thema: GridView-Header erhält falsche ID
Am im Forum: Web-Technologien

Hallo,

richtig, was Abt schreibt.
Wäre hilfreich zu wissen, wo (in welchen Handler) du die IDs setzen willst.

Zitat
statt den angegebenen IDs erhalten beide Elemente die ID "daten" (ohne zuweisung haben sie KEINE ID)
Das ist scho seltsam. Die IDs sollten immer eindeutig sein. Bekommst Du wirklich die ID "daten" mehrfach, ohne weiteren Zustaz?

Gruß, MarsStein

Thema: ASP.NET WebForms GridView mit fixem header
Am im Forum: Web-Technologien

Hallo,

Startscripte für eine Seite sollte man unter WebForms mit ClientScript.RegisterStartupScript(...) registrieren. Die werden dann erst ausgeführt wenn die Seite geladen ist (es sei den nes werden Daten über Ajax nachgeladen).

Ob man offsetWidth direkt auf dem Element setzten kann, bin ich mir nicht sicher... ich würde es eher mit elem.style.width = otherElem.offsetWidth + 'px' versuchen.

Ob das alles in Deinem Fall hilft weiss ich nicht. Deine Methode ergibt nicht wirklich Sinn. Du versuchst die Width für jede Zelle zu stezen, aber nur in der ersten Zeile ?!? Was soll der Browser Deiner Ansicht nach damit anfangen?

Gruß, MarsStein

Thema: Programm startet minimiert wenn es mittels VBA gestartet wird
Am im Forum: GUI: WPF und XAML

Hallo,

normalerweise müsstest Du Deinem Shell-Befehl noch einen Parameter dafür mitgeben können...
Schau z.B. mal hier:
Shell Function
Besonders auch was beim Parameter windowstyle steht:

Zitat
If windowstyle is omitted, the program is started minimized with focus.
Das wäre also Dein Kandidat. Warum der Firefox da anders reagiert, kann ich nicht sagen.

Gruß, MarsStein

(und ja, der Link bezieht sich auf Access... den Parameter müsstest Du in Word aber genauso oder zumindest ähnlich mitgeben können)

Thema: Freiwillige, anonyme Umfrage zum Thema DevOps
Am im Forum: Smalltalk

Hallo,

Zitat von Abt
Nene, der Link ist mit Absicht nur in diesem Forum.
Das erkläre ich dann zusammen, worum es in der Umfrage überhaupt ging
Hmm, wenn es speziell für dieses Forum ist, dann hättest Du's vielleicht gleich dazuschreiben sollen. Ich kann mir vorstellen, dass dann noch der eine oder andere mehr mitmacht /mitgemacht hätte.
(Ich hatte die Umfrage auch schon vorher ausgefüllt)

Gruß, MarsStein

Thema: WebForms, SQLDataSource, SelectParameters, ALLE(*)
Am im Forum: Web-Technologien

Hallo,

das passt schon so mit den Parametern

Wenn Du genau weisst, um was für einen konkreten Typen es sich bei dem DbCommand handelt, kannst Du es ggf. noch casten und dann die Funktionen des konkreten Typen nutzen (z.b. wenn es ein SqlCommand ist, kannst Du darauf casten und die Parameter dann mittels AddWithValue hinzufügen).

Gruß, MarsStein

Thema: ObservableCollection: Inhalt austauschen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

wenn Du ohnehin den kompletten Inhalt austauschst, könntest Du Dir auch überlegen, die ObservableCollection selbst auszutauschen (also eine ganz neue Collection zu erzeugen).

Gruß, MarsStein

Edit:
öhmm zu spät. Aber ich poste es trotzdem, um die Ansicht von Sir Rufo zu unterstützen.

Thema: WebForms, SQLDataSource, SelectParameters, ALLE(*)
Am im Forum: Web-Technologien

Hallo,

ich denke ich würde hier eher das SelectCommand im CodeBehind verhackstücken.
Da gäbe es dann 2 Möglichkeiten,

1.
eine Methode die den Command-Text zurückgibt und die Parameter setzt, und das dann an das SelectCommand binden also im Markup:

<asp:SqlDataSource ID="SqlDS_Artikel" runat="server"
        ConnectionString="<%$ ConnectionStrings:DB_Con %>"
        ProviderName="<%$ ConnectionStrings: DB_Con.ProviderName %>"
        SelectCommand="<%# BuildSelectCommand() %>" />
und im CodeBehind


public string BuildSelectCommand()
{
   string command = "SELECT * FROM artikelpreise"
    // hier anhand der ausgewählten DDL-Werte prüfen welche Parameter benötigt werden
    // diese der SqlDataSource hinzufügen und das
    // Command richtig zusammenbauen, dass es nur das Benötigte enthält
    if(...)
    {
        SqlDS_Artikel.Parameters.Add(...);

        command += ...;
    }
    return command;
} 

oder

2.
Das Selecting-Event der SqlDataSource abonnnieren.
In den EventArgs steckt das DbCommand, das abgesetzt werden soll, dadrin hast Du auf den CommandText und die Parameters ebenfalls Zugriff und kannst auf die gleiche Weise wie oben in der BuildSelectCommand-Methode das Command nach Deinen Wünschen abändern.

Gruß, MarsStein

Thema: MVVM (Visual Basic) - Combobox aktualisiert sich nicht?
Am im Forum: GUI: WPF und XAML

Hallo,

Zitat von Sir Rufo
Probier es einfach mal aus
Das habe ich gemacht. Allerdings glaube ich, dass ich die Frage immer noch missverstehe.

Tatsche ist, das Binding für den angezeigten Text in den Combobox-Items läuft über die Elemente der ItemsSource und den DisplayMemberName.
Das Binding für den Text, der in der (zugeklappten) Combobox angezeigt wird, kommt über das ViewModel. In diese gebundene Property geht auch der Text, den man in die Combo tippt.

Das funktioniert auch alles wie ich mir das vorgestellt habe. Ändert man die Property im MainViewModel z.B. über einen Task, wird das auch richtig angezeigt. Ändert amn den Wert in einem gebundenen Item, wird diese ebenfalls korrekt aktualisiert (wenn das Item INPC implementiert).

Zwischen beiden Werten besteht bezügl. des Bindings erst mal keine Kopplung, will man eine haben, muss man sie implemetieren.

@_Cashisclay
Ich glaube, der Knackpunkt liegt aber ganz woanders:
Wenn man Text in die Combo tippt, wird die Source aktualisiert - während dieser Aktualisierung ist aber die Gegenrichtung - View aktualisieren aus der Source - für dieses Element unterdrückt. Eine Änderung des getippten Textes ist auf die Art nicht möglich - dazu brauchst Du dann sowas wie von Sir Rufo vorgeschlagen.

Falls das noch nicht hilft:
Damit wir hier nicht alle aneinander vorbeireden, solltest Du nochmal genau beschreiben, was Du vorhast.
Aus Deinem ersten Post:
Zitat
If Not IsDBNull(DataRow.Item("Lieferschein")) Then ViewModel.Lieferschein_Text = DataRow.Item("Lieferschein")
Wann und durch welche Aktion wird dieser Code denn ausgeführt?
Wann wird Lieferschein_Text noch geändert, und durch welche Benutzeraktion?
Was stellst Du Dir als Ergebnis vor, und was passiert stattdessen?
Kannst Du das versuchen möglichst genau zu beschreiben, denn bisher ist das (zumindest für mich) immer noch etwas undurchsichtig.

Gruß, MarsStein

Thema: MVVM (Visual Basic) - Combobox aktualisiert sich nicht?
Am im Forum: GUI: WPF und XAML

Hallo,

Zitat von _Cashisclay
Im Setter hatte ich es schon versucht und eben auch noch einmal .. hatte auch nicht funktioniert.
Das kommt mir seltsam vor...
Ich muss jetzt doch mal nachfragen: Bist Du sicher, dass Dein VM auch tatsächlich INotifyPropertyChanged implementiert, oder nur das PropertyChanged-Event zur Verfügung stellt?

Gruß, MarsStein

Thema: MVVM (Visual Basic) - Combobox aktualisiert sich nicht?
Am im Forum: GUI: WPF und XAML

Hallo,

das hatte ich gar nicht gesehen, dass das im PropertyChanged passiert...
Ich denke das passiert, weil Du die selbe Property während ihres Changed-Events nochmal änderst, wird diese Änderung aus Sicherheitsgründen ignoriert (habe mir den Code von .NET diesbezügl. noch nicht angeschaut). Sonst könntest Du da z.B. leicht eine Endlosschleife aus PropertyChanged-Events bauen.

Warum wiollst Du das eigentlich im PropertyChanged überprüfen, und nicht direkt im Setter? Dann könnte sowas nicht passieren...

Gruß, MarsStein

Thema: MVVM (Visual Basic) - Combobox aktualisiert sich nicht?
Am im Forum: GUI: WPF und XAML

Hallo,

wie sieht denn das Binding aus?

Gruß, MarsStein

Thema: Wann muss ich genau einen Anweisungsblock anwenden?
Am im Forum: Grundlagen von C#

Hallo,

stell die Frage besser andersrum: Wann braucht man keinen Anweisungsblock?
Du brauchst ihn nämlich immer, ausser der Block besteht nur aus einer einzigen Anweisung.
Nur in diesem Spezialfall kann man sich den Anweisungsblock mit den geschweiften Klammern sparen.

Gruß, MarsStein

Thema: Javascript-Funktion wird (nur) im IE nur einmal ausgeführt
Am im Forum: Web-Technologien

Hallo,

Zitat
Weiß jemand wieso es nicht mehr funktioniert wenn es einmal ausgeführt wurde???
Nein. Aber eine Vermutung hätte ich anzubieten:
Wie sieht denn die Stelle aus, an der Du die Funktion an das click-Ereignis des Buttons hängt?
Möglicherweise hast Du da einen Funktionsaufruf stehen, statt die Funktion als Handler zuzuweisen.

Gruß, MarsStein

Thema: ImageUrl im Code gesetzt: Wird nicht geladen weil Bild nicht gefunden - 404 Not Found
Am im Forum: Web-Technologien

Hallo,

das BitmapImage kann an der Stelle nicht funktionieren - das ist WPF und hat mit WebForms nichts zu tun.

Du könntest es mal versuchen mit

img1.ImageUrl = ResolveClientUrl("~/img/Test1.png");
Allerdings hast Du ja schon ein serverseitiges Control, in dem Du das versuchst. Das sollte den Pfad eigentlich automatisch auflösen, wenn Du es so wie im Startbeitrag machst. Könnte allerdings sein, dass das Auflösen erst passiert, wenn ein DataBind-Aufruf erfolgt. Hast Du so einen irgendwo in Deiner Page?

Wenn das alles nichts hilft, poste doch bitte mal den fertig gerenderten HTML-Code (Quelltextansicht im Browser), damit man genau sieht, was er aus Deinem Pfad bastelt.

Gruß, MarsStein

Thema: Verstehe Delegate mit Lambda Expression (Schreibweise) nicht
Am im Forum: Grundlagen von C#

Hallo,

schau mal in [Artikel] Delegaten, anonyme Methoden, Lambda-Ausdrücke & Co. , da wird's in einem eigenen Abschnitt erklärt.

Gruß, MarsStein

Thema: Unbekannte TextBox.Text anzahl in List laden
Am im Forum: GUI: Windows-Forms

Hallo,

in C# gibt es das foreach-Statement, um eine Collection vollständig zu durchlaufen, unabhängig von der Zahl der Einträge.

Bei Dir also sowas wie:


var textList = new List<string>();
foreach(TextBox currentTb in commentListTb)
{
    // mach was mit currentTb, z.B.:
    textList.Add(currentTb.Text);
}
Wenn Du nur den Text auslesen und in eine neue Liste packen willst, wird es mittels Linq-Extensions noch einfacher:

var textList = commentListTb.Select(tb -> tb.Text).ToList();

Gruß, MarsStein

EDIT: beachte aber, dass das absolute Grundlagen sind, die hier im Allgemeinen vorausgesetzt werden.

Thema: Welche Schreibweise bevorzugen: ' "" + n' oder 'n.ToString()' ?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich würde definitiv Variante 1 bevorzugen, ich finde das besser lesbar.

Was der Compiler draus baut, ab ich mir nicht angeschaut - kann gut sein dass er genau das Gleiche aus beiden Varianten baut. Auch beim Jitter könnte das noch passieren.

Einen numerischen Wert zu einem Leerstring zu "addieren" fühlt sich für mich einfach falsch an.
Mal davon abgesehen, dass in der zweiten Variante ohnehin auch ToString auf dem Counter aufgerufen wird.

Gruß, MarsStein

Edit:
In neueren C#-Versionen kannst Du aich String interpolation nutzen, das ist auch eine schöne und gut lesbare Variante:

string str = $"{anyClass.Counter}"; // entspricht String.Format("{0}", anyClass.Counter);

Thema: Hyperterminal in C# - Wie stelle ich ASCII Sending, line ends with line feeds, etc ein?
Am im Forum: Grundlagen von C#

Hallo,

\n\r sieht man immer wieder, ist aber falsch (in der Praxis macht es aber meist nichts aus).
Das sollte - wenn zusammen benutzt - immer \r\n sein (carriage return - line feed, nicht line feed - carriage return).

Ich würde an Deiner Stelle Environment.NewLine nutzen, das sollte plattformabhängig immer den richtigen Wert liefern (bei mir \r\n )

Interessant dazu: What are carriage return, linefeed, and form feed?

Gruß, MarsStein

Thema: PDF Dateien aus MemoryStream anzeigen
Am im Forum: Grundlagen von C#

Hallo,

vielleicht hilft Dir das weiter: [gelöst] PDF vom Stream im WebBrowser-Control anzeigen?
Eine andere Lösung wüsste ich jetzt nicht...

Gruß, MarsStein