[C#] CopyPaster - die Zwischenablagenablage

  • Hallo!
    ich hab heute grade mein erstes sinnvolle Tool mit C# fertiggestellt.
    Auf die Idee gekommen bin ich gestern, wie ich gesten einige viele config files umändern musste, und in jedem file immer wieder die selben drei zeilen einfügen musste, und mich gefragt hab, warum man eigentlich nur eine zwischenablage hat.


    so sieht das ding aus,


    die bediehnung ist folgendermaßen:


    • der [v] knopf (soll einen pfeil nach unten darstellen) läd den inhalt(nur text) der Zwischenablage (was man mit strg+c bzw. x reingeschmissten hat) in den CopyPaster. wenn man den letzten (den einzigen leeren) slot beläd, wird automatisch ein neuer, frischer hinzugefügt
    • der [^] knopf läd den Inhalt des slots in die Zwischen ablage
    • der [-] knopf löscht den slot
    • "Always on Top" ist wohl selbsterklärend ;)


    Für die Applikation hab ich keine winforms sondern WPF benutzt.. ich hab gehört, dass die jetzt voll im Trend sind ;)


    .exe
    design
    code


    kommentare sind erwünscht
    ps: mit der art wie ich die neuen Zeilen hinzufüge, bin ich selbst nicht ganz glücklich, wenn wer was "saubereres" weiß .. gerne

  • Danke!
    .. ich hab mich auf dein anraten mal mit der ListBox gespielt..
    irgendwas mach ich falsch.. wenn ich mit

    Code
    1. pastersBox.Items.Add("y x");


    was hinzufüge markiert der immer irgendas, bzw. er entmarkiert das vorherige item nicht..
    was mach ich falsch?
    das eigenartige ist dass er bei

    Code
    1. <ListBox Name="pastersBox" >
    2. <ListBoxItem>a</ListBoxItem>
    3. <ListBoxItem>b</ListBoxItem>
    4. <ListBoxItem>c</ListBoxItem>
    5. <ListBoxItem>d</ListBoxItem>
    6. <ListBoxItem>e</ListBoxItem>
    7. </ListBox>


    ganz normal bediehnbar ist, wenn ich aber drei dinger mit obrigen code hinzufüge, failen genau die drei rum..


    edit: in http://openbook.galileocomputi…2f09aa4b270f7c87ea4eb4b54 wird genau so vorgegangen.. dafuq!?

  • Das etwas was mich zz extrem nervt. Das Problem hab ich nämlich auch. Hab auch schon von einem Selektionsbug in WPF gehört.
    Keine Ahnung, ob ich was falsch mache oder ob es wirklich ein Bug ist.

  • Bei mir markiert er nur ein Item. Falls es dennoch nicht geht, dann probier es so


    Code
    1. <ListBox Name="pastersBox" SelectionMode="Single"></ListBox>


    Code
    1. pastersbox.items.add("Eins")
    2. pastersbox.items.add("Zwei")
    3. pastersbox.items.add("Drei")
  • so

    Code
    1. pastersbox.items.add("Eins")
    2. pastersbox.items.add("Zwei")
    3. pastersbox.items.add("Drei")


    ist das auch kein problem
    aber
    versiuch mal das

    Code
    1. pastersbox.items.add("Eins")
    2. pastersbox.items.add("Eins")
    3. pastersbox.items.add("Eins")


    Scheinbar ist .net so "schlau" und erkennt, dass die alle gleich sind und speichert deswegen 3 Referenzen auf das SELBE objeke, was in anderen fällen ganz nett und speicherschonend sein kann - uns hier aber um die ohren fliegt!


    so:

    Code
    1. string s1 = "blah";
    2. ListBoxItem lbi= new ListBoxItem();
    3. lbi.Content = s1;
    4. pastersBox.Items.Add(lbi);


    macht das keine probleme, weil die daten "versteckt" sind und .net nicht mitbekommt, dass die gleich sind.


    was lernen wir daraus:
    Well done Microsoft: Durch "gutes" Speichermanagement bin ich gezwungen mehr Speicher zu verbrauchen - danke!
    ;)