Laden...
Avatar #avatar-1651.gif
Programmierhans myCSharp.de - Experte
Coden was das Zeug hält Zentralschweiz Dabei seit 05.04.2005 4.221 Beiträge
Benutzerbeschreibung

Forenbeiträge von Programmierhans Ingesamt 4.221 Beiträge

23.09.2013 - 15:54 Uhr

Hat Siemens auch Beispiel-Projekte mitgeliefert ?

Funktionieren diese auf Deinem Rechner ? Wenn Diese funzen, dann machst Du was falsch und kannst in diesen Projekten schauen was wie referenziert wird....

Wenn diese nicht funzen, dann liegt es an der Installation...

23.09.2013 - 14:32 Uhr

Entweder liegt die Tecnomatix.Engineering dll nicht in der richtigen Version im Verzeichnis ( Version=11.0.0.440 )... oder diese dll verwendet noch weitere Dll's welche nicht gefunden werden !

23.09.2013 - 09:37 Uhr

Schau mal wie das in einer ListBox geht: Listbox für Bilder

20.09.2013 - 14:10 Uhr

Hier nur noch eine viel einfachere Möglichkeit:


        private bool _InItemCheckEvent = false;
        void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            if (this._InItemCheckEvent)
            {
                return;
            }
            this._InItemCheckEvent = true;
            bool blnChecked = (e.NewValue == CheckState.Checked);
            if (e.Index == 0) //Alle
            {
                for (int i=1;i<this.checkedListBox1.Items.Count;i++)
                { 
                    this.checkedListBox1.SetItemChecked(i,blnChecked);
                }
            }
            else
            {
                if (blnChecked)
                {
                    this.checkedListBox1.SetItemChecked(0, this.checkedListBox1.CheckedItems.Count == this.checkedListBox1.Items.Count - 2);
                }
                else
                {
                    this.checkedListBox1.SetItemChecked(0, this.checkedListBox1.Items.Count-this.checkedListBox1.CheckedItems.Count == 1);
                }
            }
            this._InItemCheckEvent = false;
        }

16.09.2013 - 11:14 Uhr

Mein erstes Projekt war eine Kapselung von VBHLLAPI ... rausgekommen ist dabei die Fernsteuerung von 3270-Sessions eines IBM OS 390-Hosts per VB 3.

13.09.2013 - 15:36 Uhr

Aha jetzt verstehe ich endlich wieso es hier Leute mit so vielen Posts gibt:-)

Das war jetzt natürlich nicht wirklich ernst gemeint 😃

13.09.2013 - 14:45 Uhr

Hier noch meine Implementierung:



        public static bool Contains<T>(this IEnumerable<T> source, IEnumerable<T> needle, IEqualityComparer<T> comparer)
        {
            if (!needle.Any())
            {
                //wenn b leer ist, dann sind alle aus needle (also keine) in source enthalten
                return true;
            }

            bool ret = false;

            IEnumerator<T> enumerA = source.GetEnumerator();
            var bFirst = needle.First();

            int iAOffset = 0;

            while (enumerA.MoveNext())
            {
               //zuerst nur gegen das erste element aus needle vergleichen
                if (comparer.Equals(enumerA.Current, bFirst))
                {
                    //das erste Item von needle passt schon mal
                    ret = true;

                    //einen inneren Enumerator ziehen und auf den äusseren synchronisieren
                    IEnumerator<T> innerA = source.Skip(iAOffset).GetEnumerator();
                    IEnumerator<T> innerB = needle.GetEnumerator();
                    while (ret)
                    {
                        if (innerB.MoveNext())
                        {
                            //verschiebe auch A
                            if (innerA.MoveNext())
                            {
                                ret = comparer.Equals(innerA.Current, innerB.Current);
                            }
                            else
                            {
                                //InnerA ist am Ende also kann B nicht mehr matchen
                                ret = false;
                                break;
                            }
                        }
                        else
                        {
                            if (ret)
                            {
                                //InnerB ist am Ende und ret ist true also kann die Suche abgebrochen werden
                                return ret; 
                            }
                        }
                    }
                } 
                iAOffset += 1;
            }

            return ret;


        }

source: a; b; c; d; e; f; g; needle: Erwartet: True Result: True
source: a; b; c; d; e; f; g; needle: b; a; Erwartet: False Result: False
source: a; b; c; d; e; f; g; needle: a; b; Erwartet: True Result: True
source: a; b; c; d; e; f; g; needle: e; f; g; Erwartet: True Result: True
source: a; b; c; d; e; f; g; needle: f; g; h; Erwartet: False Result: False
source: a; b; c; d; e; f; g; needle: f; g; g; Erwartet: False Result: False
source: a; b; c; d; e; f; g; needle: a; c; e; Erwartet: False Result: False
source: a; b; c; d; e; f; g; needle: a; b; b; Erwartet: False Result: False
source: a; b; c; d; e; f; g; needle: a; h; Erwartet: False Result: False

Passt oder habe ich was übersehen ?

Gruss
Programmierhans

13.09.2013 - 13:12 Uhr

Mach mal ein BeginEdit vor
und EndEdit nach dem setzen.

13.09.2013 - 13:08 Uhr

@HiGHteK

Die Lösung ist falsch.

source: a; b; c; d; e; f; g; needle: b; a; Erwartet: False Result: False
source: a; b; c; d; e; f; g; needle: a; b; Erwartet: True Result: True
source: a; b; c; d; e; f; g; needle: e; f; g; Erwartet: True Result: True
source: a; b; c; d; e; f; g; needle: f; g; h; Erwartet: False Result: True
source: a; b; c; d; e; f; g; needle: f; g; g; Erwartet: False Result: True
source: a; b; c; d; e; f; g; needle: a; c; e; Erwartet: False Result: False

Gruss
Programmierhans

13.09.2013 - 12:45 Uhr

UserControl statt Form

12.09.2013 - 17:08 Uhr

Leider enthällt deine Lösung einige Fehler:
Du kannst nicht davon ausgehen, dass die Klasse ToString korrekt implementiert, und vorallem kannst du nicht davon ausgehen, dass Die ToString zuordnung eindeutig ist

😃 Es ist eine ganz schmerzfreie Implementierung nur genau für dieses Szenario (mit den strikt aufeinander folgenden Strings)... das bin ich mir durchaus bewusst... deshalb auch der Hinweis dass es eine sehr plumpe Lösung ist.

Aber schön dass es jemand gemerkt hat 😃... meine Lösung war ja auch mehr als Scherz gedacht 😃

PS: In genau diesem Szenario würden die Ergebnisse passen.

Gruss
Programmierhans

12.09.2013 - 13:48 Uhr

Wir haben in einer einzigen Anwendung einen über die Tastatur geschleiften Scanner (ansonsten native).

Wir verlangen im Barcode Präfix und Suffix...

[vomScanner]

vonTastatur

So kannst Du das unterscheiden.

--> also im Prinzip eine der von trib vorgeschlagenen Methoden.

Funzt jeden Tag ohne Problems.

Gruss
Programmierhans

12.09.2013 - 13:40 Uhr

Zugegeben eine plumpe Lösung:


public static bool Contains<T>(IEnumerable<T> enumerable, IEnumerable<T> item, IEqualityComparer<T> comparer)
{

	StringBuilder sbA = new StringBuilder();
        StringBuilder sbB = new StringBuilder();

        foreach (var a in enumerable)
        {
            sbA.Append(a.ToString());
        }

        foreach (var b in item)
        {
            sbB.Append(b);
        }

        return sbA.ToString().IndexOf(sbB.ToString())>-1;
}

11.09.2013 - 15:04 Uhr

Google-Suche nach msdn DataFormats.Bitmap

Nachtrag: IDataObject.GetFormats-Methode

Du kannst ja prüfen was alles im e.Data verfügbar ist... Nur was verfügbar ist kannst Du auch verwenden...

11.09.2013 - 13:25 Uhr
  
        private void levelPanel_DragEnter(object sender, DragEventArgs e)  
        {  
            if (e.Data.GetDataPresent(DataFormats.Bitmap)) <------------  
            {  
                e.Effect = DragDropEffects.Copy;  
            }  
            else  
            {  
                e.Effect = DragDropEffects.None;  
            }  
        }  
  
        private void levelPanel_DragDrop(object sender, DragEventArgs e)  
        {  
            string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop)); <---------  
            foreach (string fileLoc in filePaths)  
            {  
                if (File.Exists(fileLoc))  
                {  
                    try  
                    {  
                        Point localPoint = levelPanel.PointToClient(new Point(e.X, e.Y));  
                        AddSprite(fileLoc, localPoint.X, localPoint.Y);  
                    }  
                    catch  
                    {  
                        MessageBox.Show("Falsches Datenformat?"  
                              + "\nErlaubt Formate sind: *.png, *.jpeg, *.bmp ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);  
                    }  
                }  
            }  
        }  
  

Schau mal die Pfeile... und klingelts ?

10.09.2013 - 17:08 Uhr

Schau Dir mal das hier an:

UserControl kann im Designer nicht hinzugefügt werden

So kannst Du mal prüfen welcher Code deiner BasisView im Designer auf die Bretter geht...

Und ev. verstehst Du dann was ich in meinem vorherigen Post gemeint habe (wie Du über ein Flag problematischen Code im Designer umgehen kannst).

Gruss
Programmierhans

10.09.2013 - 16:28 Uhr

Ohne jetzt alles im Detail zu lesen:

Wieso machst Du in der BaseClass nicht 2 Constructors...

  1. Default-Constructor ohne Params (das ist der Ctor den der Designer aufruft)
  2. einen Constructor mit Params welchen Du aus den vererbenden Klassen aufrufst.

Je nach Constructor kannst Du Dir dann ein Flag setzen ob problematischer Code ausgeführt werden soll oder nicht.

Gruss
Programmierhans

10.09.2013 - 16:07 Uhr

Looooool

Vergesst es... ich bin so was von blind....

Im EXE ist der Code auch in einer #IF DEBUG-Region...

Sprich der Code des Addin wird nicht aufgerufen weil das im EXE auch so ist.

Ist somit erledigt.

Danke für die Hilfe

Gruss der Blinde

10.09.2013 - 15:59 Uhr

definier eine andere Variable als DEBUG, welche auch im Release Build definiert ist.

Hallo Björn

Ich präzisiere es noch ein wenig:

  • Mein StartProjekt ist das Addin... welches das externe-Program (den Host) startet...

Ziel: Wenn mein Addin in DEBUG ist, dann möchte ich dass die #if DEBUG Statements aktiv sind... wenn ich in RELEASE bin, dann sollen diese nicht aktiv sein.

Eine weitere Variable im HOST ändert daran nichts... Ich will ja eben den Host nicht wechseln müssen 😃

PS: sonst kann ich ja auch den Host auswechseln (Debug/Release-Version)... und genau das möchte ich nicht.

Gruss
Programmierhans

10.09.2013 - 15:40 Uhr

Auch das hatten wir schon mal:

Rekursiver TreeView Save/Restore aufgrund des FullPaths

Gruss Programmierhans

10.09.2013 - 15:31 Uhr

Hallo Miteinander

Ich habe ein Dll welches als DEBUG gebuildet ist.

In diesem Dll verwende ich an diversen Stellen


#if DEBUG

Wenn der Host (welcher das Dll lädt) als Release gebuildet ist, dann läuft der Code im #if DEBUG nicht ein.

Kann man das irgendwie anpassen ?

Ziel: Host ist Release-Build / Dll ist Release oder Debug.

Gruss
Programmierhans

10.09.2013 - 13:06 Uhr

Verzögertes Laden von Daten im TreeView

Oder dessen Base LoadOnDemandTreeView (suche verwenden)

09.09.2013 - 11:31 Uhr

Lies Dir das schon mal durch (da geht's zwar um Excel... ist aber das selbe)

EXCEL wirklich schliessen

Damit Du die Objekte auch wieder sauber schliessen kannst.

Gruss
Programmierhans

06.09.2013 - 13:17 Uhr

Da Du eh gleich auf einen Fehler laufen wirst 😃

Ein Remove aus einer Collection während Du über diese iterierst wird nicht funktionieren.

Gruss
Programmierhans

04.09.2013 - 16:29 Uhr

Könnte auch daran liegen dass dass WorkSheet noch referenziert wird...

Guck mal da: EXCEL wirklich schliessen

02.09.2013 - 09:13 Uhr

Ein einfaches RecreateHandle auf dem TabControl und schon dreht sich die Erde wieder.


            ((System.Reflection.MethodInfo)typeof(TabControl).GetMethod("RecreateHandle", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.InvokeMethod)).Invoke(this.tabControl1,null);

Gruss
Programmierhans

18.07.2013 - 14:37 Uhr

Kommt mir bekannt vor...

Einer unserer Kunden verzögert auch gerne Rechnungen (wenn 1 Position bestritten wird, dann wird die ganze Rechnung zurückbehalten)....

Ein nettest Mail geschickt, dass bei Nichtbezahlung der Wartungsgebühren die Wartung bis zur vollständigen Bezahlung eingestellt wird hat da Wunder bewirkt.

Gewisse Kunden brauchen einfach den Zwang 😃

02.07.2013 - 11:04 Uhr

Der Fehler sagt ja ganz klar welches Problem Du hast. (vermutlich eine Collection geändert während Du darüber iterierst).

Im VisualStudio gehst Du auf Debuggen/Ausnahmen

Dann bei Common Language Runtime Exceptions bei Ausgelöst einen Haken setzten.

Dann lässt Du Deine Anwendung wieder laufen.

Wenn die Exception ausgelöst wird, dann stehst Du auf der verursachenden Zeile (vermutlich in einem foreach).

Gruss
Programmierhans

24.06.2013 - 11:11 Uhr

Du reichst ja nur das Visilbe Property des Buttons durch. Und vermutlich macht die TabPage den unsichtbar.

Speichere den Wert in einem eigenen Property.

10.05.2013 - 13:10 Uhr

np dafür ist ja das Forum da.

Möge der Designer mit Dir sein. 😃

08.05.2013 - 18:29 Uhr

Debug es mal wenn es im Designer gehostet wird.

Guck hier habe ich mal beschrieben wie man so was debuggen kann: (nicht alles lesen... nur wie Du es Debuggen kannst)

UserControl kann im Designer nicht hinzugefügt werden

Ev. läuft Dein Load nicht durch... oder this.Visible im Load tut nicht das was Du denkst 😃

08.05.2013 - 14:00 Uhr

Alternative Idee

Dictionary<ListItem,object> dictAdditionalPropertiesForListItem

Jedes ListItem in diese liste mit dem zugehörigen object (welches Du in das Tag reinschreiben wolltest)...

So kannst Du dann jederzeit über das Dictionary auf dein Tag-Objekt zugreifen.

08.05.2013 - 13:50 Uhr

Auch mir hat das Teil sehr bei der Ausarbeitung von Ausdrücken geholfen (und nochmal ein Dank an herbivore).

Nur so als Tipp: Wenn ein Ausdruck im Tester funktioniert... aber im .Net Code nicht, dann kann es eigentlich fast nur daran liegen, dass per Default im Tester IgnoreCase geflaggt ist... (Habe ich dann nach mehr als 20 minütiger Suche auch irgendwann festgestellt).

08.05.2013 - 13:29 Uhr

Du kannst ja leicht ermitteln welche Geräte im Moment verliehen sind.

Mach doch einen NOT IN Select auf die verliehenen Geräte.

PS: Habe schon seit Jahren kein SQL mehr gebraucht... deshalb mache ich auch keinen Vorschlag wie das in SQL genau aussehen müsste.

07.05.2013 - 13:30 Uhr

Such mal hier im Forum (Etiketten) das wurde schon bis zum Abwinken diskutiert.

07.05.2013 - 11:05 Uhr

Hast Du mal versucht beim SetParent das Handle deines Panels (statt des Forms) zu übergeben ?

04.04.2013 - 13:55 Uhr

Ich finde hier keinen Bezug zu meiner Frage. Die Form-Instanz existiert ja nach der Beendigung des Moduls nicht mehr.

Ja die Form nicht... aber du könntest ja eine Ref auf das Panel halten und dieses später wiederverwenden...

Aber wenn Du das nicht vestehst, dann fehlt es wirklich an Grundlagen.

Gruss
Programmierhans

04.04.2013 - 10:31 Uhr

Hallo Zusammen

Form-->Panel-->VieleControls

Vor dem Wegschmeissen des Forms machst Du ein Form.Controls.Remove(Panel).

Wenn Du ein neues Form brauchst, wieder Form.Controls.Add(Panel).

Das sind aber wirklich Grundlagen der allerersten Stunde....

Gruss
Programmierhans

28.03.2013 - 18:03 Uhr

Bleibt hängen... tönt nach Deadlock...

Wo (im UI-Thread) hast du den Thread gestartet und was machst Du dann im UI-Thread ? hast Du da ev. ein Thread.Join auf genau diesen Thread drin ? Dann würde der Join den UI-Thread blockieren und der Invoke kommt dann nicht rein...

Gib mal ein wenig mehr Code ...

Gruss
Programmierhans

PS: Wenn der Code stillsteht... schau mal im Threads-Window wo die einzelnen Threads stehen... steht davon einer auf einem .Join ?

28.03.2013 - 13:35 Uhr

Hallo herbivore

Nicht schlecht die Idee... wobei bei einem Event kann ich das Pragma nur als Member des Typen einfügen (es kommt dann einfach immer ganz am Anfang der Klasse)...


ctdB.Members.Add(new CodeSnippetTypeMember("#pragma warning disable 0108"));

Aber so ist die Warnung nun weg.

Danke sehr vielmals

Gruss
Programmierhans