Laden...

Forenbeiträge von panicJonny Ingesamt 64 Beiträge

24.09.2015 - 13:12 Uhr

Hallo,

dürfen wir wissen, was das für ein Sensor ist, oder ist da ein Geheimnis?

27.02.2015 - 20:43 Uhr

Hi Palin, MrSparkle hat recht. Um das normale Einbinden von Controls geht es mir gar nicht.

Ich hab mal einen Screenshot erstellt um zu zeigen, welche Liste ich um ein eigenes Control erweitern möchte.

Grüße,

27.02.2015 - 16:12 Uhr

Hallo zusammen,

ich habe da ein kleines "Problem" 😃

Zur Beschreibung muss ich ein wenig weiter ausholen.

Also. In meiner Anwendung habe ich in dem Hauptfenster einen Statusstrip, in dem ich die vergangene Zeit anzeige.
Bisher hatte ich die Logik dafür in der Klasse der Form. Das war mir irgend wann zu unübersichtlich. deswegen habe ich das jetzt in eine eigene Klasse ausgelagert, die von ToolStripStatusLabel erbt.

So weit, so gut. Es läuft alles wie gewollt. Es gibt nur einen kleinen Schönheitsfehler:
Ich kann das Control nicht über den Designer in die Statusbar einfügen. Die Stausbar hat ja ihre eigene Methode um Controls hinzu zu fügen. Kann man das irgend wie ändern? Ich muss bisher das Control über den Konstruktor hinzufügen.
Das ist nicht so schön, da ich die so die eine Hälfte im Designer zusammen stöpsel und dann noch Sachen mit Code in die Oberfläche einfügen muss.

Das ist nicht gerade übersichtlich und wenn ein anderer damit arbeiten muss, ich das auch nicht grad intuitiv nachzuvollziehen.

Hat da einer ne Idee?

Grüße,

PS: Die Klasse ist zwar nichts besonderes, aber wenn gewünscht kann ich die gerne in den Snippet Teil stellen.

19.11.2014 - 15:50 Uhr

Schon mal dran gedacht einfach zu dokumentieren?

Hi,

echt an alles gedacht.

Anrede,
Inhalt,
Abschied.

Was Datentypen bedeuten in eine extra Doku zu schreiben, ich hoffe an der Stelle meinst du so was wie doxygen oder das MS interne ///, wird nicht lange aktuell bleiben.

Ist mir schon öfters passiert, dass die Anforderungen sich zwischendrin ändern. Dann ist das meistens auch mit einem neuen Container für die Daten getan. Das wird aber mit ziemlicher Sicherheit irgend wann in einer separaten Doku vergessen.

Außerdem ist das ziemlich albern in einer Dokumentation nachschauen zu müssen wärend man über den Quelltext fliegt.

Grüße,

19.11.2014 - 14:55 Uhr

Hi,

Das ist auch eine Variante.

Falls das nicht so ganz rüber gekommen ist. Es geht mir gar nicht um eine Konkrete Problemlösung.

Es ist eher eine philosophische Frage 😉

19.11.2014 - 14:19 Uhr

Hallo zusammen,

ich hab da mal eine Stilfrage und würde gerne eure Meinung dazu hören.

Ich bin grad dabei ein Dictionary zu benutzen. Darin will ich einen String als Key und einen für die Werte haben.

Also, flott flott wie immer ein


Dictionary<string,string> foo;

geschrieben.

Wenn ein anderer nun meinen Code liest, sieht er dass in dem Dict zwei strings gespeichert sind. Der Datentyp ist an der Stelle aber völlig wumpe.

Viel interessanter ist doch eigentlich, was in dem Dict gespeichert werden soll. Also habe ich mal ganz frech noch zwei


using chunkName = System.String;
using chunkData = System.String;

hinzugefügt.
Damit wird dann ein


Dictionary<chunkName,chunkData> foo

Das sieht schon mal besser aus. Der geneigte Leser weiß jetzt, was für Informationen in dem Dict gespeichert werden. Jedoch ergeben sich jetzt Inkonsistenten bei dem Interface nach außen. Da chunkName und chunkData nur innerhalb dieser einen Datei existieren.

Als dritte Variante habe ich dann noch


Dictionary<string,string> foo; // <chunkName, chunkData> 

probiert. Das finde ich aber auch nicht wirklich gut, weil die Initialisierung separat im ctor steht und ich dass dann entweder wieder als Kommentar dazu schreiben muss oder es weglasse und dann fehlt mir die Information wieder.

Dazu kommt noch, dass einige Methoden zur Verarbeitung ein KeyValuePair<string,string> benutzten. Wenn ich das kommentieren will, komm ich mir langsam doof vor 😃

Wie handelt Ihr so was?
Normalerweise kann man ja vernünftig benamte Variablen verwenden, aber in diesem Fall ist das echt doof.

Bin schon mal auf Eure Antworten gespannt.

Grüße,

PS: Ich hoffe ich hab mein kleines "Problem" darstellen können. chunkName und chunkData sind natürlich nur willkürlich genannte Namen und dienen nur der Veranschaulichung.

01.08.2014 - 09:52 Uhr

Hallo zusammen,

gibt es eigentlich eine Möglichkeit var zu seinem Zielausdruck zu expanideren?

Wenn man z.Bsp schreibt:


     var foo ="Hallo Welt"

dann weiß das VS ja, dass sich hinter var ein string befindet (zeigt es auch an)

gibt es jetzt die Möglichkeit auf Knopfdruck das var durch string zu ersetzen?

Hintergrund ist, ich mag var eigentlich nicht sonderlich. Die Ersetzung wäre eine schöne Möglichkeit sich Tipparbeit zu sparen.

Grüße und hoffentlich hab ich mich halbwegs verständlich ausgedrückt.

EDIT von 28.08.2014: Natürlich geht es nicht um string sondern um so was wie fancyNamensraum.langerKlassenName.RückgabestrucktEinerMethode.

14.02.2014 - 14:55 Uhr

Hallo,

da stellt sich eine Frage, wozu das Ganze?

Das du Eingaben von Benutzern sowieso auf jeden Fall und immer überprüfen musst ist ein ganz normaler Vorgang. Was bringt es, wenn du weist, wo es falsch war?

PS: Ich meine damit, prüfe die Eingaben vor der Benutzung und mahne falsche an.

Grüße,

29.10.2012 - 15:55 Uhr

Hallo,

womit machst du denn dein Setup? Versuch doch mal den Installer Creator NSIS. Der ist gut dokumentiert und kann auch andere Setups ausführen.

Grüße,

29.10.2012 - 15:48 Uhr

Hallo,

kannst du ein wenig genauer Beschreiben, was du willst?

Da sind einige Merkwürdigkeiten: Was ist denn Parse(string) mein Visual Studio will das nicht Compilieren?

Warum erstellst du in deinen Umwandlungen von string auf float eine neue Klasse Test? Bei mir geht das gar nicht, weil es keinen Construktor mit einem Argument gibt?

Geht das überhaupt, das man einen String übergeben kann? Normalerweise ist value vom Typ der Variable, will sagen, du kannst doch gar keinen string übergeben.

Zuletzt. Vielleicht offenbare ich hier nur mein Unwissen, aber es gibt doch gar ein Eigenschaften Fenster für Klasse. Ich kenne nur eins für Controls, das hat aber damit nix zu tun.

Ach, eins noch. Du brauchst gar keinen privaten Member isEmpty. Da du das eh immer neu berechnest. Die Variable wird nur dann gesetzt, wenn du es abfragst. Wenn du es intern noch benutzen willst must du isEmpty an anderer Stelle setzten.

Grüße,

24.07.2012 - 14:32 Uhr

Hiho,

schau doch erst mal, ob du das Ganze mit einem Terminalprogramm
à la RealTerm hinbekommst. Da geht das Fehlersuchen ein wenig leichter von Hand, da du nicht noch die Fehlerquelle Programmcode hinzufügst.

Grüße,

18.11.2011 - 13:17 Uhr

Immerhin hab ich damit viele Spatzen getroffen 😄

Ich geb an der Stelle auch einfach mal zu, dass das oben mein erster echter Versuch in Sachen Reflection war. Hat mir viel Spaß gemacht, das zu basteln und als ich gesehen habe, dass der Beitrag schon älter ist, wollte ich das eigentlich nicht posten.

Aber mal interessant zu sehen, wie du dich von deinem ersten Post weiterentwickelt hast ^^.

Grüße,

15.11.2011 - 14:55 Uhr

Hallo,

mittels ein wenig WinApi kannst du das Neuzeichnen verhindern.

Und so geht das:


        [DllImport("user32.dll")]
        public static extern bool LockWindowUpdate(IntPtr hWndLock);


        LockWindowUpdate(deineRichTextBox.Handle)
             // Hier selektieren 
             // Was auch immer machen
             // Selektion aufheben
        LockWindowUpdate(IntPtr.Zero);


Grüße,

14.11.2011 - 14:34 Uhr

@Björn,

das funktioniert leider nicht so gut, da eine Lexikalische Konvertierung mit Typeconverter nicht geht.

Ich hätte das so:


public static bool isType<T>(string value)
{
            // is everytime a string
            if (typeof(T) == typeof(string)) return true;

            // else try to find a TryParse of the output type            
            MethodInfo x = default(T).GetType().GetMethod("TryParse", new Type[]{typeof(string),typeof(T).MakeByRefType()});
            
            // if a TryParse found, return the result. Othwerwise return false
            if (x != null)
                return (bool)x.Invoke(new object(), new object[] { value, default(T) });
            else return false;            
}

gelöst

Grüße,

PS: Verbesserungen sind gerne gesehen