Laden...

Forenbeiträge von sharp.new Ingesamt 100 Beiträge

25.01.2007 - 16:32 Uhr

Hallo egrath,
danke für den Snippet aber diese hatte ich schon ausprobiert aber ohne Erfolg. Ich möchte nicht die ComboBox füllen, sondern den Eingabebereich nutzten, sowohl für ne Auswahl aus der Combobox als auch manuell direkt eintragen.

im Anschluss soll dass ausgewählte oder eingetragene über ein KeyPress-Ereigniss an die Methode in Klasse "xy" weitergereicht werden. Das Problem ist ja,dass aus dem DropDown ausgewählte zur ANzeige gebracht werden(innerhalb des TreeViews),dass manuell eingetragene nicht...

Grüsse

25.01.2007 - 16:02 Uhr

Hallo,
das ist ja das eigenartige in beiden Fällen wandert der String rüber in die Methode.
Die Übergabe sieht folgendermassen aus:

iniMatMerk.ME_NodeAnlegen("cbMerk", blnSet, base.getId(), this.cbMerkmal.Text);

Und die Methode die aufgerufen wird:

public void ME_NodeAnlegen(string vCBAct,bool blCB,string vMId,string vMEText)

Grüsse

25.01.2007 - 15:23 Uhr

Hallo zusammen,
ich sitze schon eine Weile an einem Problem,steige leider nicht hinter.
Ich habe eine DropDown ComboBox in der ich einen Wert eingeben,und auch bestehende Items auswählen kann. Nach einen KeyPress-Ereignis(Enter) möchte ich dann enteder dass neu reingeschriebene oder das ausgewählte weiterbearbeiten,in meinem Fall ein neuen Node in einem Treeview erzeugen. Die Variante mit der DropDown-Auswahl funktioniert einwandfrei,allerdings wenn ich einen neuen Eintrag reinschreibe und mit "Enter" bestätige, wird der Node erzeugt aber mit einem null Eintrag.

Ich lese hierzu die comboBox.Text Eigenschaft aus und übergebe diese direkt über eine Methode weiter an die Tree-Klasse.

Mir ist schon klar,dass auf die ComboBox.Item Referenz bezogen wird. Aber ich habe in beiden Fälen ein String innerhalb des Combobox.Text als Wert enthalten.

Wo liegt dass Problem??Leider sehe ich es nicht....

Grüsse

22.01.2007 - 16:25 Uhr

Halo Herbivore,
dake es funzt....

Grüsse

22.01.2007 - 16:08 Uhr

Hallo Herbivore,
danke für die schnelle Antwort. Es funktioniert soweit ganz gut,springt in dei letzte Zeile. Allerdings kommt der Cursor nicht nach,der bleibt weiterhin in der obersten linken Celle.Wie könnte man den mitzuehen lassen.

Grüsse

22.01.2007 - 15:49 Uhr

Hallo,
ich habe ein DataGridview was über ein Array Befüllt wird. Nun möchte ich nach hinzufügen einer neuen Arraywertes,und somit ein neue Gridzeile den TabCursor auf die letzte Zeile setzten. Ich finde leider keine geignete Methode dafür. Gibt es eine äquivalente Methode,wie die FirstDisplayCelled, dafür..
Danke im Vorraus

Grüsse

19.01.2007 - 15:30 Uhr

Hallo zusammen,ich habe ien Problem mit einem Usercontrol.
Folgende Ausgangsstellung: Ein Usercontrol UC1 mit Artikeldaten hat auf sich nochmal ein Usercontrol UC2 mit Artikeldetails. Auf UC2 befinden sich einige Groupboxes in denen controls(Textbox,Button etc.)zugeordnet sind. Auf UC1 sind zwei Buttons mit denen ich die Groupboxes .Enabled,Eingabefähig o. Eingabefähig über "true","false", setzten möchte. Nach dem ersten Aufbau des Usercontrols und Betätigung passiert es auch. Allerdings danach bleibt es in dem ersten Zustand. Die Initialisierung des UC2 geschieht in UC1 in "Initialize Components",so dass über dieses Object in UC2 Methoden aufgerufen werden, die das setzten der Klasseninteren Controls durchführen:

Das CodeBeispiel sieht sehr vereinfacht so aus:

   
public class UC1 : Usercontrol
{
   InitializeComponents()
   {
    private UC2 = iniUC2;
    iniUC2 = new UC2;
   }

    private void speichernToolStripButton_Click(object sender, EventArgs e)
        {    
            iniUC2.setCntr(true);
        }   

    private void speichernToolStripButton_Click(object sender, EventArgs e)
        {    
            iniUC2.setCntr(false);
        }
{


public class UC2 : Userontrol
{

   public void setCntr(bool blnset)
    {
         
        this.groupBox1.Enabled = blnset
    }

}

Grüsse

//edit: C#-Code-Tags ergänzt!!!

03.01.2007 - 13:37 Uhr

Hallo zusammen,
folgendes Anliegen:
Ich habe 3 verschachtelte Usercontrols:Auf UC1 sitzt ein UC2 auf dem wiederum UC3. Ich möchte nun Informationen die von UC1 stammen UC3 übergeben.

Ich habe so angesetzt, dass alle drei vo einer OberKlasse erben, in der über get()-set()
Methoden Variablen und Objekte gesetzt und ausgelesen werden

Das set() innerhalb UC1 funktioniert einwandfrei. Allerdings beim Zugriff aus UC3 auf die Oberklasse über get() hab ich null-Parameter.

Woran könnte dies liegen????

Grüsse

08.12.2006 - 09:07 Uhr

Hallo nochmal,
ich muss gestehen der Umfang der Frage war ein bischen abstrakt dargestellt. Die gleiche Problemstellung wurde hier schonmal gepostet unter dem Thread:

Event "Click" und "MouseDown" auslösen

Es ist von der Problemstellung identisch. Als Verursacher kam in dem Fall die MessageBox in Frage die in meinem Code nicht aufgerufen wird.

Grüsse

07.12.2006 - 13:25 Uhr

Hallo zusammen,
ich habe in einem DataGridView eine Drag&Drop Funktionalität eingebaut anhand diesen
Beispiels auf Codeproject.com.

http://www.codeproject.com/csharp/DataGridView_Drag-n-Drop.asp

Es ist leider so,dass das MouseEvent alle anderen Events z.b CellContentClick-Event überblendet, so dass diese nicht anspringen. Setzt man die Eigenschaft vom Button e auf Rechte Maustaste funktioniert es prima. Andernfalls auf Linke Maustaste werden die Events nicht ausgeführt. Woran liegt das Problem und wie könnte man das beheben?

Danke im Vorfeld und Grüsse.

22.11.2006 - 17:23 Uhr

Hallo Programmierhans,
ich habe das Event dieser Form geändert.



            this.tbMatEing.DragEnter += new DragEventHandler(this.OnDragEnter);
            this.tbMatEing.DragDrop += new DragEventHandler(this.tb_DragDrop);
            this.tbMatEing.DragOver += new DragEventHandler(this.OnDragOver);

leider ohne Erfolg..

Keines der Methoden wird angestossen, weder beim reinziehen in das TextBox noch beim loslassen..Dumme Frage: Kann eine Textbox überhaupt Drag&Drop-Ereignisse aufnehmen????

Grüsse...

EDIT: Code-Tags korrigiert!

22.11.2006 - 16:16 Uhr

Hallo zusammen,
das Tehema Drag&Drop ist sehr oft vertreten hier im Forum, allerdings beziehen sich diese immer auf ListViews,TreeViews etc. die auf der gleichen Form oder Usercontrols angebracht sind.
Ich habe zwei ListViews auf Usercontrol1, auf Usercontrol2 ist eine Toolstriplabel in der ich selektierte(Drag) Items in das TextBox Dropen lassen will.

Innerhalb des Usercontrols 1 werden die Ereignisse bekanntgemacht:


private void load_Event()
        {
            this.lvMatEigen.ItemDrag += new  ItemDragEventHandler(this.ucList_ItemDrag);
            this.lvMatFremd.ItemDrag += new ItemDragEventHandler(this.ucList_ItemDrag);

            this.lvMatEigen.DragDrop += new DragEventHandler(this.ucList_DragDrop);
            this.lvMatFremd.DragDrop += new DragEventHandler(this.ucList_DragDrop);

            this.lvMatEigen.DragEnter += new DragEventHandler(OnDragEnter);
            this.lvMatFremd.DragEnter += new DragEventHandler(OnDragEnter);

        }

Anschliessend die Methoden für ItemDarg,DragEnter,DragDrop aufgeführt


private void OnDragEnter(object sender, DragEventArgs drgevent)
        {
            if (!drgevent.Data.GetDataPresent(typeof(DragItemData).ToString()))
            {
                drgevent.Effect = DragDropEffects.None;
            }
            else
            {
                drgevent.Effect = DragDropEffects.Move;
            }
        }



            }
        }

private void ucList_ItemDrag(object o, ItemDragEventArgs e)
        {
            lvMatEigen.DoDragDrop(this.GetDataForDragDrop(lvMatEigen), DragDropEffects.Move);
            lvMatFremd.DoDragDrop(this.GetDataForDragDrop(lvMatFremd), DragDropEffects.Move);
        }


        private DragItemData GetDataForDragDrop(cpsList ucList)
        {
            UCArtikel.DragItemData data1 = new UCArtikel.DragItemData(ucList);
            foreach (ListViewItem item1 in ucList.SelectedItems)
            {
                data1.DragItems.Add(item1.Clone());
            }

            return data1;
        }


Mein Usercontrol 2 sieht wie folgt aus:


 public void load_Event()
        {
           
          this.toolStrip1.DragEnter += new DragEventHandler(this.OnDragEnter);
          this.toolStrip1.DragDrop += new DragEventHandler(this.tb_DragDrop);
        }

private void OnDragEnter(object sender, System.Windows.Forms.DragEventArgs drgevent)
        {
            
   if(!drgevent.Data.GetDataPresent(typeof(cps.UCArtikel.DragItemData).ToString()))
            {
                drgevent.Effect = DragDropEffects.None;
            }
            else
            {
                drgevent.Effect = DragDropEffects.Move;
            }

        }


        private void tb_DragDrop(object sender,  
                                                             System.Windows.Forms.DragEventArgs e)
        {
        

              //hier passiert dann etwas 

        }

Das ItemDrag Ereigniss wird ausgelöst, allerdings wenn ich mich über der TextBox dropen lasse wird die DragDrop-Methode innerhalb des Usercontrols2 nicht angestossen. Mein Verdacht liegt darin,dass ein globales Event aus der Klasse Usercontrol1 nicht existiert die das DragItem übergibt bin mir aber nicht sicher. Das Gegenargument dazu wäre das DragEventArgs e,dass in jedem Usercontrol zur Verfügung steht.
Wäre für eine schnelle Hilfe dankbar,Grüsse

13.11.2006 - 15:41 Uhr

Hallo zusammen,
leider finde ich keinen Ansatz. Ich habe ein ArrayList wo die Objecte in einem ListView
angezeigt werden. Ich habe zwei Listview's mit den zugehörigen ArrayLists. nach der Selektion des einen ListViewItems wird nach einer Logik ein zugehöriges ArrayListobject im zweiten ArrayList ermittelt und soll im zweiten ListView von der letzten Stelle an die erste Stelle wandern und angezeigt werden. Das Sortieren eines ArrayList erfordert stets zwei Vergleichsobjecte um die .Sort() Methode nutzen zu können. Ich möchte nicht vergleichen bzw. das ArrayList neu sortieren, sondern nur die Reihenfolge im ArrayList verändern bzw. von der evtl. untersten Indexstelle an die erste bringen.

Ich hoffe das war nicht verwirrend..

Grüsse

07.11.2006 - 12:13 Uhr

Hallo zusammen,
ich habe es mittlerweile gelöst und zwar mit der TransactionsScope Klasse.

Grüsse

07.11.2006 - 10:06 Uhr

Hallo zusammen,
ich muss anhand einer Kundenvorgabe folgendes umsetzten. Innerhalb einer aktiven Transaktion sollen mehrere Tabellen (Kundentabelle und die dazugehörige Rechnungstabelle) zur "fast" gleichen Zeit aktualisiert werden. Die Argumentation lautet
,dass eine Dateninkonsistenz herschen würde, wenn dieses so nicht umgesetzt wird.

Ich kann allerdings nur ein commandText als SQLString zuweisen. Die Parametercollection hat Ihre Parameter-Values für alle Tabellen.
Wie kann man innerhalb einer connection,einer Transaction mehrere SqlCommands zu unterschiedlichen Tabellen und den Parametern zuweisen und anschliessend mit einem Commit() abschliessen????

Grüsse

30.10.2006 - 14:22 Uhr

Hallo Yellow,
danke für die schnelle Antwort. Im Beispiel wird das Bild als byte[]-Array abgespeichert, allerdings habe ich in den Datenbank-Datentypen keine byte[]-Auswahl. Welchem Datentyp entspricht den Byte-Array, einem Bitmap???

Grüsse

30.10.2006 - 13:59 Uhr

Hallo zusammen,
ich suche Ideen, wonach ich in eine Datenbank Bilder von Artikeln abspeichern kann.
Welches Format nimmt man am besten? Jpeg,Bitmap oder hat das Framework ein eigenstädiges Format. Es sollte von der Grösse natürlich sehr klein sein und von der Qualität nicht einbüssen müssen..

Grüsse

25.10.2006 - 15:46 Uhr

Sorry, habe ich übersehen reinzuschreiben. Es handelt sich um ein ListView, bie dem die
Checkboxes über CheckedIndizes ausgelesen werden. Nach dem auslesen möchte ich alle Häckchen wieder entfernen(Nullzustand):::

Grüsse

25.10.2006 - 15:19 Uhr

Hi,
gib es einen Befehl mit dem man mehrere gecheckte Items auf Nullzustand bringen kann...

Grüsse

25.10.2006 - 10:04 Uhr

Hallo zusammen,
ich habe ein ruesen Problem. Ich kann keine Elemente mehr einfügen,sei es ein neues Formular,Benutzersteuerelemente usw. Nach der Auswahl erscheint eine leeres Auswahlfeld. Woran könnte dieses liegen?? Kann man die Funktionalität innerhalb der IDE nachträglich einbinden?? EILT!!!!!

Grüsse

16.10.2006 - 14:50 Uhr

Danke für die vielen Anreize erst einmal, aber was sagt Ihr zu meinem Code. Wie könnte man diese durch eine kleine Änderung, so hinbekommen, wie angedacht.

zu Talla: ich Tendiere zu dem zweiten Vorschlag von dir. Diese habe ich auch versucht Codetechnisch umzusetzten(siehe oben).

Grüsse

16.10.2006 - 14:29 Uhr

Ja,Stimmt war ein bischen wenig. Also das TreeView ist gekoppelt mit einer ListView. Sobald ein Node aus dem TreeView selektiert, wird im ListView zugeordnente Artikel als Beispiel angezeigt. Man Kann nun weitere Artikel in das ListView hinzufügen oder entfernen. Beim Wechsel in ein anderen Node sollen die Änderungen abgespeichert werden. Davor muss ich natürlich abgleichen ob etwas hinzugekommen ist bzw. entfernt worden ist. Und den Anfangszustand den möchte ich mir merken...

Grüsse

16.10.2006 - 14:17 Uhr

Hallo zusammen,
eigentlich ist mein Anliegen trivial....Ich möchte bei einer Auswahl auf ein TreeNode dieses ausgewählte abspeichern in einem ArrayList. Beim Wechsel des Nodes möchte ich
dann das ArrayList abarbeiten und anschliessend mit dem zuletzt aktivierten Node befüllen. Ich ahbe sogar eien innere Klasse(KatItem), die nur für das Ablegen zuständig ist.

Hier ein bischen Code:::
An der *// Stelle wird das ArrayList befüllt


 public ArrayList MatZuKat()
        {
            KatItem inikatit = new KatItem();
            ArrayList al_Ukn = new ArrayList();
            al_MatId.Clear();

            char[] sep = new char[] { ',' };
            string[] nodeID = selTree.Name.Split(sep, StringSplitOptions.None);
            
            al_Ukn = F_LastNode(ddStruktKnoten);

            foreach (KeyValuePair<string[], ArrayList> kv_kn in ddKnoten)
            {
                if (kv_kn.Key[0] == nodeID[0])
                {
                    foreach (string[,] str_ddVal in kv_kn.Value)
                    {
                        foreach (string al_str in al_Ukn)
                        {
                            //beschreibt,dass lediglich der KatalogKopf vorhanden ist, ohne Material
                            if (al_str == "1")
                            {
                                break;
                            }
                            else if(al_str == str_ddVal[0, 1])
                            {
                                al_MatId.Add(str_ddVal[0, 4]);
                            }
                        }
                    }
                }
            }

            *////////*///////
            inikatit.setKatItem(al_MatId);
            return al_MatId;
        }



An dieser Stelle soll auf das ArrayList zugeriffen werden.Nach abarbeitung wird das
ArrayList mit den neuen Werten befüllt..


public void MatzuKat_erweitern(ArrayList alMatzuord)
        {
            KatItem iniKatit = new KatItem();

            foreach (String alStr in iniKatit.getKatItem())
            {
                if (alMatzuord.Contains(alStr))
                {
                }
                else
                {
                    //base.SaveMethods(inidbupd.delMethod(alStr, "Id", "StruktTree"));    
                }
            }

            alMatzuord.Clear();

            *///
            iniKatit.setKatItem(al_MatId);
        }







Und hier die innere Klasse



private class KatItem
        {

            ArrayList alMatId = new ArrayList();
            ArrayList alTemp = new ArrayList();

            public KatItem()
            {
        
            }

            public ArrayList getKatItem()
            {
                TempAl();
                return alTemp;
            }
            

            public void setKatItem(ArrayList al_migKatItem)
            {
            
                alMatId = al_migKatItem;
        
            }

            private void TempAl()
            {
                foreach (String alstr in alMatId)
                {
                    alTemp.Add(alstr.Clone());
                }
            
            }
        }

Grüsse SharpNew

12.10.2006 - 12:23 Uhr

Hallo zusammen,
ich kann über Drag&Drop von Listview1 in Listview2 ListviewItem verschieben funktioniert auch wunderbar. Nur wenn mindestens ein Element in LV2 vorhanden ist.
Hierbei habe ich vor dem einfügen(DragDrop) eine Methode die ein Polygon zeichnet. Das Polygon wird an die Position des letzten Items gesetzt. So wenn kein Item vorhanden ist springt es logischerweise aus der Methode raus. Wie kann mann einer leeren Listview vielleicht ein synonym Item zuweisen was nicht nichtbar ist oder andersrum wie kann man das Polygon an die oberste Stelle positionieren. Der Versuch mit .TopItem schieterte leider.

Grüsse

29.09.2006 - 14:02 Uhr

Hallo Herbivore,
an der Name-Eigenschaft liegt es nicht. Es liegt daran das das ListviewControl innerhalb eines splitcontainer.Panel1 zugeordnet ist. Die Parent-Eigenschaft liefert als Ergebniss lediglich eine Ebene drüber. Gibt es keine Standardmethode,aus dem Framework, die diese zurückliefert???

Grüsse

29.09.2006 - 13:15 Uhr

Hallo Herbivore,
nach jeglicher Überprüfung sind alle Variablen gesetzt. Ich verwende allerdings ein ListviewControl in drei unterschiedlichen Usercontrols. Es ist eine Vermutung aber auch weil mir nichts einfällt im Moment. Könnte es an der vielfachen Verwendung eines Controls in verschiedenen Usercontrols liegen?

Grüsse

29.09.2006 - 12:27 Uhr

Hallo Herbivore,
ist das nicht die Name-Eigenschaft des Controls, dass entweder über den Editor oder auch Codetechnisch vergeben wird. Diese sind bei allen Controls vergeben oder von welcher Variable ist hier die Rede ?(

Grüsse

29.09.2006 - 12:11 Uhr

Hallo Herbivore,
danke für die schnelle Antwort, funktioniert auch soweit. Allerdings erhalte ich bei einer Auswahl eines Listviews, die ich wie folgt zuweise:


string vparent = getcontrl.Parent.Name.ToString();

die Zuweisung "".

Sämtliche andere Controls(TreeView etc.) funktionieren 🤔

Grüsse

29.09.2006 - 11:33 Uhr

Hallo zusammen,
ich habe eine Methode geschrieben innerhalb der Main, die mir das Focusierte Control als Rückgabewert zurückliefert, funktioniert auch Einwandfrei. Nun möchte ich des weiteren den Usercontrol ermitteln in der sich das Control befindet. Zur Info ich habe einige Usercontrols die auf der Main dynamisch platziert werden und möchte eine Auswertung statfinden lassen aus welchem Usercontrol etwas eingegangen ist.

Oder gibt es eine elegante Lösung in der aus zwei Usercontrols die Selektion eines Listvieweintrages oder Treevieweintrages ausgewertet werden kann.

Grüsse

27.09.2006 - 13:02 Uhr

Hallo FZelle,
danke für den Codeblock, aber leider funktioniert es nicht.
Scon bei der Command-Object Erzeugung erhalte ich eine Fehlermeldung:

Sql-ParameterColection akzeptiert nur Typobjecte keine Stringobjecte

Entweder habe ich das Konzept der Parametercollection nicht verstanden, es ist doch so dass einem Parameter @DB-Feld eine Value zugewiesen wird. Der Parameter ist in meinem Fall ein String den ich äquivalent der DB-Spaltenname erzeuge.

Grüsse

27.09.2006 - 10:18 Uhr

Hallo zusammen,
kurzer Projekthintergrund: Ich habe ein ArrayList mit SQL-Parametern und eine ArrayList mit den Values. Mit command.Parameters.AddWithValue füge ich beide zusammen. Dieses möchte ich solange durchführen bis das Value-Arraylist durch ist. ANschliessend innerhalb einer Transaktion n SQL-Abfragen durchführen.

Mein Code funktioniert bei einem Value-Satz, sobald mehrere Values anstehen kommt Fehlermeldung das ein Parameter bereits initialisiert ist.


foreach (ArrayList str_sql in al_sqlstring)
            {
                string sqlStatement = str_sql[0].ToString();

                command.CommandText = sqlStatement;

                if (al_param_insert.Count != 0)
                {
                    
                    ArrayList alTemp = (ArrayList)str_sql[1];
                    
                    
                    foreach (ArrayList al_val in alTemp)
                    {
                        int index_al = al_val.Count;
                        for (int i = 0; i < index_al; i++)
                        {

                            //Hinzufügen Parameterliste ("@string-parametername",object value)
                            command.Parameters.AddWithValue(al_param_insert[i].ToString(), al_val[i]);
                        }
                    }
                }
            }

            command.Transaction = transaction;
            
            try
            {
                // Änderungen auf der Datenbank durchführen
                command.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                // Anwendungsausnahme werfen
                throw new ApplicationException("Fehler beim aktualisieren von Datenbanktabelle", ex);
            }
                
        }


Grüsse
Sharp.New

08.09.2006 - 12:40 Uhr

Hallo,
zum 1. Beitrag: casten hatte ich schon versucht, ist aber nicht möglich.
zum 2.Beitrag: ich nutze im Moment das Ereignisshandling von der
Entwicklungsumgebung, indem ich beiden Listviews die gleiche Methode
"EventItemCheck" zugeweisen habe. Dort habe ich auch die EventArgs e
die allerdings keine Listviewdaten(objecte) beinhaltet.

08.09.2006 - 12:24 Uhr

Hallo zusammen,
ich komme bei der Auswertung eines listviewereignisses nicht weiter.
Ich ahbe auf einem Usecontrol zwei Listviews und ein drittes Anzeigelistview.
Ich möchte aus den beiden listviews auf das Click-Ereigniss im Usercontrol reagieren.
Die Ereignisse werden aus beiden Listviews gefeurt und kommen auch an, allerdings habe ich im object sender den selektierten Item in form eines strings, das sämtliche informationen vom Item beinhaltet. Der Zugriff auf die Items erfolgt über SelectedItem, das ist mir bekannt. Ich kenne aber die Listview nicht die das Ereigniss ausgelöst hat, da ich eine Methode nutzen will die beide ListViews abarbeitet.

Mein Code sieht wie folgt aus...


private void EventItemClick(object o,EventArgs e)
        {

            ListViewItem selItem = new ListViewItem(o.ToString()); 
            //hier weiss ich nicht weiter
        
        }

Danke im Vorfeld und Grüsse

05.09.2006 - 11:04 Uhr

Danke an beide,funktioniert jetzt 👍. Manchmal sieht man den Wald voller Bäume nicht.

Grüsse

05.09.2006 - 10:42 Uhr

Hallo zusammen,
kurz zur Problemstellung. Ich habe zwei Listviews die defaultmässig mit Daten gefüllt sind. Listview 1 mit Stammdaten, ListView2 mit gefilterten Daten. Ich habe eine Routine
geschrieben die mit Drag&Drop aus der ListView1 einzelne aber auch mehrere Zeilen in die Listview2,beim loslassen (Drop-Ereigniss) einfügt. Funktioniert auch bestens, aber es sind Einträge die in der Quell(LV1)-Listview und Ziel(LV2)-Listview identisch sind. Mein jetziger Ansatz liegt darin vor dem Drop die die selektierten Elemente die geklont in einem Arraylist sind mit den LV2.Items zu gegeneineander zu prüfen. Im ersten Durchlauf geht diese auch,aber sobald ein nicht identische Zeile eingefügt wird wird die Überprüfung nicht mehr durchlaufen..

Codeblock:


UCKatMat.DragItemData data1 = (UCKatMat.DragItemData)drgevent.Data.GetData(typeof(UCKatMat.DragItemData).ToString());
                
                if (item1 == null)
                {
                    for (int num1 = 0; num1 < data1.DragItems.Count; num1++)
                    {
                        ListViewItem item2 = (ListViewItem)data1.DragItems[num1];
                        
                        //Vergleich zwischen vorhandenen Items und selektierten Items

                        foreach (ListViewItem alTemp in ucList2.Items)
                        {
                                if (alTemp.ToString() != item2.ToString())
                                {
                                    ucList2.Items.Add(item2);
                                    al_Matzu_o.Add(item2);
                                }
                        }
                        
                    }
                }


04.08.2006 - 15:36 Uhr

Nachtrag:

ich arbeite mit DataTables und nicht mit einem DataSet...Es sollte meineserachtens kein UNterschied darstellen...

04.08.2006 - 15:12 Uhr

Hallo zusammen,
ich habe ein Problem beim hinzufügen von Insert,Delete,Update-Befehlen an eine bestehende Transaction. Ich erhalte eine NullReferenceException. Ich kann mir nicht erlären warum. Es geschieht beim hinzufügen der Commands an den SQl-Adapter..

Teilstück des Codes:



            string selectStatement = "SELECT * FROM " + dbTableName;
            
            
            // SELECT-Befehl für den Metadatenabruf erzeugen
            SqlCommand metaCommand = new SqlCommand(selectStatement, 
                                                                                      connection);

            // Datenadapter erzeugen
            SqlDataAdapter adapter = new SqlDataAdapter(metaCommand);

            try
            {
                SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
            }
            catch (Exception ex)
            {
                
                throw new ApplicationException("UPDATE, INSERT und DELETE-Befehle 
                zum aktualisieren von Tabelle '" + dbTableName + "' konnten nicht 
                erstellt werden.", ex);
            }
            
            // An dieser Stelle kommt die Exception////
            adapter.InsertCommand.Transaction = transaction;
            adapter.UpdateCommand.Transaction = transaction;
            adapter.DeleteCommand.Transaction = transaction;


Danke im Vorfeld,Grüsse

03.08.2006 - 17:02 Uhr

das problem ist, dass das Object mein Event nicht kennt. Das Object caste ich zuvor als Usercontrol. Ich habe im Object lediglich die Methoden,Ereignisse usw. von einem Usercontrol....

Grüsse

03.08.2006 - 15:08 Uhr

Hallo,
ein guter Link über Events für den Wechsel bzw.Aufruf unterschiedlicher Events. Löst leider mein Problem nicht insofern, da ich bei der Erzeugung des Usercontrolobjectes nicht weiss welches erzeugt worden ist(siehe oben). Es muss doch möglich sein zur Laufzeit einer dynamisch aufgerufenen Klassse ein Event mitzugeben....

Grüsse

03.08.2006 - 13:12 Uhr

Hallo zusammen,
ich brauche dringends eure Hilfe. Es geht um folgendes:
Ich lade in ein Usercontrol dynamisch(Trägerusercontrol,oberste Ebene), über den Namen jeweils einen weiteren Usercontrol rein der wiederum eine Usercontrol(TreeView-Anzeigeklasse) beinhaltet. Nun soll bei Auswahl eines Nodes aus der TreeViewklasse ein Event ausgelöst werden.

Mit der standard Event-Methodik komm ich leider nicht weit, weil die dynamischen Usercontrols innerhalb der obersten Ebene nicht bekannt sind.

Kann man beim erzeugen des Usercontrolobjektes diesem einen Event zuweisen oder wie könnte man so etwas lösen???

Der Codeblock an der die Usercontrols dynamisch erzeugt werden:


                    string uckl = CaptionCopy[i, j + 2];
                    
                    Object uc1 = Activator.CreateInstance(Type.GetType(uckl));
                    UserControl uc1cast = (UserControl)uc1;

                    uc1cast.Name = uckl;
                    stackStripSplitter.Panel1.Controls.Clear();
                    stackStripSplitter.Panel1.Controls.Add(headerStrip2);
                    stackStripSplitter.Panel1.Controls.Add(headerStrip1);
                    stackStripSplitter.Panel1.Controls.Add(uc1cast);
                    uc1cast.Dock = System.Windows.Forms.DockStyle.Fill;
                    uc1cast.BringToFront();



02.08.2006 - 13:30 Uhr

Hallo,
ich habe ein Eventhandler geschrieben dass wie folgt aussieht:
Hierbei soll bei Auswahl eines TreeNodes innerhalb eines anderen auf der Mainform sich befindenden Usercontrol ein Event ausgelöst werden. Das Event wird über die Mainform gesetzt.

Usercontrolklasse die die TreeView-Ereignisse auswertet und anhand der TreeView
Afterselect reagiert.


public delegate void frm1sendEventKat(Dictionary<string, ArrayList> KatStr, TreeNode selNode);

public event frm1sendEventKat frm1EsendKatSel; 



private void Event_TreeLoad()
        {
         KatTree.AfterSelect += new TreeViewEventHandler(frm1_sendsel);
        }

        public void frm1_sendsel(object sender, TreeViewEventArgs ea)
        {
            setNode = KatTree.SelectedNode;
            frm1onSelEvent(ddStruktKnoten, setNode);
        }

       private void frm1onSelEvent(Dictionary<string, ArrayList> dcTMP, TreeNode  
                                                 SelTree)
        {
            if (frm1EsendKatSel != null)
            {
                frm1EsendKatSel(dcTMP, SelTree);
            }
        }


Innerhalb der Mainform deklariere ich in der InitializeComponent()
das Event:


this.catalogTree = new cps.CatalogTree();
catalogTree.frm1EsendKatSel += new frm1sendEventKat(this.TreeEvent);


public void TreeEvent(Dictionary<string, ArrayList> ddStrukt, TreeNode pNode)
        {
            string sel_krit = "m";
            string ink_exclusiv = "E";
            ucMatzu.aktualAnzList(inimat.F_MatZuKat(ddStrukt, pNode, sel_krit, 
                                                                         ink_exclusiv));
        }


Nach dieser Vorgehensweise kann ich das TreeView-Usercontrol in einem anderen Formular entsprechend einbinden und es funktioniert. Jedoch nicht in der Mainform
und weiss beim besten Willen nicht warum...

Grüsse

26.07.2006 - 15:52 Uhr

Halli Hallo,
leider finde ich unter dem Schlagwort Events nicht dass was ich benötige. Und zwar habe ich eine Form1 die eine zweite Form2 öffnet. Auf der Form2 befinden sich zwei Usercontrols. In UC1 befindet sich eine TreeView-KLasse in der ein Event deklariert ist die in UC2(Listview) Events ausführt Nun möchte über ein Buttonklick-Event eines vorhandenen Butons,innerhalb von Form2, das TreeView-Node auswerten und anschliessend die Node-Infos der Form1 übergeben.

Frage: Wie kann mann mehrere Events aus der selben klasse steuern, bzw. wenn innerhalb der TreeView-Klasse unterschiedliche oder gleiche(After-Select) Events aus verschiedenen KLassen gesetzt werden. Wie können diese Unterscheden werden??

Ich danke im Vorfeld und würd mich auch über ein Vorschalg einer anderen Herangehensweise freuen.

Grüsse

21.07.2006 - 17:38 Uhr

Hallo zusammen,
das Thema Event wurde in diesem Form sehr oft besprochen und auch beschrieben, allerdings reichen diese Infos. meinem Anliegen nicht aus.
Ich habe auf einer Form ein Steuerusercontrol, die in sich ein weiteres Trägerusercontrol beinhaltet, die wiederum in sich eine Komponentenklasse beinhaltet. Die Komponentenklasse ist eine TreeViewklasse die lediglich als Anzeige benutzt wird. Im Trägerusercontrol habe ich ein eigenes Event geschrieben. Aus der Mainform soll über den Delegate das Event gesetzt werden, tut es aber nicht..Das Event ist stets null..

Über meine Mainform setzte ich ein weiteres Event innnerhalb des Steuerusercontrols, diese wiederum wird gesetzt. Kann mann zwei Events im selben Usercontrol überhaupt setzten. Dazu finde ich leider nichts.

Danke im Vorfeld
Grüsse

14.07.2006 - 14:50 Uhr

Hallo zusammen,
ich habe eine konzeptionelle Frage und komme einfach nicht weiter.

Ich habe eine reine Anzeige(TreeView)klasse die in unterschiedliche Usecontrols geaddet wird. Die TreeViewklasse wird über das Usercontrol mit Dateninformationen, in Form eines aufbereiteten Dictionary's, versorgt. Über ein PopUp-Formular sollen nach Eingaben diese als Übergabeparameter übernommen und in die, in der Usecontrolklasse
sich befindende Dicitionary übernommen werden und anschliessend ein Event ausgelöst werden, die ein Refresh meines TreeViews bewirkt.

Frage: Wie kann auf die Dictionary, von aussen zugegriffen werden, ohne dass Sie Ihre Inhalte verliert.

Grüsse

30.06.2006 - 14:42 Uhr

Hallo Herbivore,
👍

30.06.2006 - 09:35 Uhr

Hallo,
also mein Problem hat sich seit dem letzten Beitrag eher verschärft. Der Hintergrund liegt darin, dass ich ein Dictionary aufgebaut habe mit einem TKey, was meine Datenköpfe darstellen sollte und der TValue,eine Arraylist, in der entsprechend zu den Köpfen Objekte enthalten sein sollte. Fehlalarm: Die Arraylist speichert alle Objekte von allen Köpfen ab.

Mein Anliegen soll wie folgt aussehen:

KatId_1 KatId_1_Datenobject1
KatId_1_Datenobject2
usw.

KatId_2 KatId_2_Datenobject1
KatId_2_Datenobject2
usw.

Die Datenobjecte sollen Dynamisch sein, d.h die Grösse kann sich ändern durch hinzufügen u. löschen. Also fällt ein statisches Array raus, da der Indexwert des Arays erst bestimmt werden muss.

Nach welcher Technik könnte dieses Problem gelöst werden?

DAnke im Vorfeld..
Grüsse

28.06.2006 - 17:20 Uhr

Halo zusammen,
ich habe eine Frage bzgl. der Dictionary-Klasse. Ich möchte einer Dictionary,die aus Tkey = string und TValue = array, von einem bestehenden Key das Array aktualisieren. Das Array hat eine dynamische Grösse. Mir gelingt leider diese Zuweisung nicht. Hat von euch einer ne Idee wie dieses realisierbar ist. Bzw. ob das überhaupt geht. In der MSDN
ist dokumentiert, dass eine mehrfache Vergabe des Schlüssels nicht gestattet ist, allerdings eine Valueaktualisierung eines bestehenden Keys nicht ausgeschlossen..

Grüsse

23.06.2006 - 15:01 Uhr

dir natürlich auch Herbivore 😁

23.06.2006 - 15:01 Uhr

Hallo Talla,
schäm,schäm..Du hattest recht genau an der Stelle lag der Fehler.Leider habe ich die nötige Erfahrung mit Dictionaries nicht. Aber nichts desto trotz danke ich dir herzlichst..

👍

23.06.2006 - 14:42 Uhr

Hallo Herbivore,
die Fehlermeldung lautet:"Element mit dem gleichen Schlüssel wurde hinzugefügt".

Ich glaube ich fasse ich deine Erklärungen falsch auf. Du sprichst von einer Variable,welche Variable meinst du??

Über die Zuweisung wird doch die Dictionary über die Methode DictKatKopf() als Rückgabewert in die neue Dictionary zugewiesen, oder ist das falsch??

Wenn du dir meine Klasse anschaust wo das Dictionary befüllt wird,siehst du, dass die Methode ein Dictionary als Rückgabewert besitzt.

Grüsse