Laden...

Forenbeiträge von FabShaw Ingesamt 4 Beiträge

22.03.2011 - 15:47 Uhr

Danke für deine Antwort.
Aber dieses Verfahren ist in meinem Fall auch nicht ganz zielführend, da ich an verschiedenen Stellen auf die Buttons verweise (Enabled-Setzen, Text ändern etc.). Dann müsste ich alle diese Aktionen ebenfalls doppelt ausführen...
Ich glaube, das ContextMenu fällt dadurch erstmal weg 😦

22.03.2011 - 14:18 Uhr

Hallo,

ich habe im FormDesigner ein MenuStrip mit vielen verschiedenen Items (bzw. Buttons) erstellt. Diese Buttons lösen Aktionen in einem ListView aus.
Nun möchte ich auf dem ListView zusätzlich ein ContextMenuStrip erstellen, in welchem exakt die gleichen Buttons und Aktionen (Events) wie im MenuStrip hinterlegt sind. Dabei möchte ich mir die Items nicht wieder umständlich per Hand zusammenklicken.
Die dynamische Erstellung der Buttons mit all ihren Eigenschaften funktioniert prinzipiell auch, jedoch bekomme ich es nicht hin, die Click-Events vom Quell- zum Ziel-Item zu kopieren.

Folgender Beispielcode dazu:


// Beispiel: Erstellen einer Kopie von "tsmiOriginal"
ToolStripMenuItem tsmiOriginal = (ToolStripMenuItem)btnCacheMenu.DropDownItems[0];
ToolStripMenuItem tsmiKopie = new ToolStripMenuItem();
tsmiKopie.Text = tsmiOriginal.Text;
            
// das funktioniert so nicht...
tsmiKopie.Click += tsmiOriginal.Click;
contextMenuStrip1.Items.Add(tsmiKopie);

Gibt es eine Möglichkeit, die Events zu übernehmen bzw. auszulesen?

26.01.2010 - 12:18 Uhr

Hi, in deiner Methode "_calculateKbps" gibt es einen Fehler: In der for-Schleife müssen die Werte summiert werden. In der Originalversion wurden die Werte immer wieder überschrieben und die Berechnung der kbps lieferte falsche Werte...
Hier der m.E. korrekte Code:


        private float _calculateKbps(ref List<long> bytelog,
            int maxbacklog, int updateintervall, long bytes)
        {
            float kbps = 0;

            bytelog.Insert(0, bytes);
            if (bytelog.Count > maxbacklog) bytelog.RemoveAt(maxbacklog);
            if (bytelog.Count > 1)
            {
                for (int i = 0; i < bytelog.Count - 1; i++)
                {
                    kbps += (bytelog[i] - bytelog[i + 1]);
                }

                kbps /= bytelog.Count;
                kbps *= (1000 / updateintervall);
            }

            return kbps;
        }

05.02.2009 - 13:35 Uhr

Hallo,

Falls ich dich richtig verstanden habe, könnten dir "left outer join's" helfen.
Damit kannst du dein Vorhaben relativ einfach umsetzen:


Insert into Kreuz (spalte1, spalte2) 
select distinct
   t.feld1, t.feld2
from (
   Select 
      a.Feld1, b,Feld1 
   from (select Feld from Source where Attribut=a) as a 
      inner join (select Feld from Source where Attribut=b) as b 
           on a.Attribut2=b.Attribut2
   ) as t
   left outer join Kreuz k  -- welche Einträge sind bereits vorhanden
      on k.Spalte1 = t.Feld1
      and k.Spalte2 = t.Feld2
where
   k.Spalte1 is null --darf noch nicht vorhanden sein