Laden...

Profil von myBig?

myCSharp.de - Member Mitglied seit

Alle Beiträge

27.08.2007 - 09:25 Uhr

Hi herbivore,

habe jetzt was passendes gefunden. Habe vielleicht immer nur die falschen Suchbegriffe eingegeben. Dieser Link hat mir auf jeden Fall geholfen.

2 DataGridView Scrollbar Synchron

MfG

27.08.2007 - 08:37 Uhr

Hi zusammen,

ich würde gerne meine beiden Scollbars im DataGridView synchronisch bewegen, also wenn ich den einen bewege, dann geht der zweite ebenfalls mit und umgekehrt auch. Leider habe ich nichts passendes gefunden.

Hat jemand ein Tipp für mich?

MfG

20.08.2007 - 10:03 Uhr

Hi herbivore,

dann werde ich mich wohl mal mit override beschäftigen, damit habe ich noch gar nicht gearbeitet. Du hast nicht zufällig eine gute Seite, wo ich was drüber lesen und durcharbeiten kann?

MfG

20.08.2007 - 09:29 Uhr

Hi herbivore,

darüber habe ich schon was gelesen und auch versucht leider funktionierte es nicht. Habe es an verschiedene Stellen versucht einzusetzen, leider ohne Erfolg.

Muss es dann da rein wo ich zeichne oder in _scroll?

Leider weiß ich nicht wo es genau hinkommt, habe es am Anfang und am Ende und mittendrinn versucht leider alles ohne Erfolg, das Flackern blieb.

MfG

20.08.2007 - 09:13 Uhr

Hi Zusammen,

ich zeichne in einer DataGridview eine bzw mehrere Lininen für jede Zeile. Wenn ich scrolle dann flackert es ungemein. Gibts da eine Möglichkeit es zu unterbinden?

Habe es hiermit versucht, leider klappt es nicht ganz so gut:


private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
            dataGridView1.Invalidate();
}

Wäre super wenn mir da einer einen Tipp geben kann.

MfG

14.08.2007 - 18:49 Uhr

Hallo herbivore,

ich glaube ich habe mich schon zu doll verrannt 🤔 ?(

das ist richtig ich will nur in den Sichtbaren Zellen zeichnen. Aber die Linie die ich zeichne sollte schon Wagerecht angezeigt werden auch wenn der Endpunkt ausserhalb des Sichtbereiches ist.

Ich habe also ein Anfangspunkt der ermittelt werden kann, da er ja aufm Bildschirm sichtbar ist, dann habe ich ein Endpunkt der nicht Sichtbar ist, daher bekomme ich auch .X = 0 und .Y = 0. Das ist ja auch logisch, da er mir die Koordinaten nicht ermitteln kann, da sie nicht aufm Bildschirm sind.

Wie stelle ich es denn an, dass er mir die Linie bis zum ende der Sichtbaren Zelle zeichnet und sobald ich Scrolle für jede weitere Zelle bis zum Endpunkt?

Ich glaub so langsam must du mich für völlig blöd halten, innerlich hoffe ich nicht 🙂

MfG

14.08.2007 - 18:05 Uhr

Hi herbivore,

jupps ich will nur in den Zellen zeichnen. Das stimmt, dass mich nur die Sichtbaren interessieren.

Blöde frage ich weiß, aber wie stelle ich es denn an wenn die Punkte also der Startpunkt und der Endpunkt oder nur einer davon nicht Sichtbar ist.

Es müsste doch machbar sein ein Zeitstrahl zwischen einem Anfangsdatum und einen Enddatum zu zeichnen.

Komme da einfach nicht weiter,wäre echt super wenn du mir da auf die Sprünge helfen könntest.

MfG

13.08.2007 - 09:09 Uhr

Guten Morgen herbivore,

das denke ich leider auch. Habe es mal getestet, sobald die Columns im Sichfeld sind, dann zeichnet er wieder so wie es sein soll. Hast du vielleicht ein Tip für mich, wie ich es anders machen kann? Oder muss ich vielleicht in der _CellPainting zeichnen? Die erste zeichne ich nämlich in _Paint.

MfG

12.08.2007 - 22:06 Uhr

Hi herbivore,

könnte es nicht eher daran liegen, dass ich


Rectangle rec = dataGridView1.GetCellDisplayRectangle(col.Index, row.Index, false);
                    dataGridView1.RectangleToClient(rec);

benutze? Denn es passiert nur wenn das Datum was ich eingebe ausserhalb vom Bildschirm ist. Also ich kann vom 01.01.2007 bis 15.01.2007 sehen und müsste dann scrollen um die anderen zu sehen.

MfG

12.08.2007 - 21:44 Uhr

Hi Zusammen,

habe da ein Problem festgestellt, dass ich bis jetzt noch nicht lösen konnte. Vielleicht weiß jemand rat und kann mir helfen.

Ich habe ein DataGridView in den Columns steht das Datum. Vom 01.01.2007 bis 31.03.2007. Hier ist der Code dazu:


int tage, tage1;
            ka.Kalender1();
            tage = ka.tage1;
            monat1 = ka.monatslaenge;

            tage1 = 0;

            for (int i = 1; i < 4; i++)
            {
                tage1 += Convert.ToInt32(monat1[i - 1]);
            }

            DateTime dt = new DateTime(2006, 12, 31);
            
            for (int i = 1; i < tage1 + 1; i++)
            {
                dataGridView1.Columns.Add(dt.AddDays(i).ToShortDateString(), (dt.AddDays(i).DayOfWeek.ToString() + " " + dt.AddDays(i).ToShortDateString()));
                
                dataGridView2.Columns.Add(dt.AddDays(i).ToShortDateString(), dt.AddDays(i).DayOfWeek.ToString() + " " + dt.AddDays(i).ToShortDateString());
            }

Das klappt ja auch wunderbar. Jetzt möchte ich, dass ein Zeitstrahl gezeichnet wird z.B. vom 02.01.2007 bis 15.01.2007. Das klappt auch wunderbar, allerdings nur bis zum 17.01.2007. Also wenn ich z.B. einen Zeitstrahl vom 02.01.2007 bis 18.01.2007, dann werden die X und Y Koordinate mit 0 ausgegeben, also in der oberen Ecke. Für den Startpunkt kommen die richtigen Koordinate.

Hier ist mein Code zum Zeichnen:


Pen pen = new Pen(Brushes.Black, 8);
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Index == dataGridView1.RowCount - 1)
                {
                    break;
                }
                Point anfang = new Point();
                Point ende = new Point();
                anfang.X = -1;
                ende.X = -1;
                foreach (DataGridViewColumn col in dataGridView1.Columns)
                {
                    Rectangle rec = dataGridView1.GetCellDisplayRectangle(col.Index, row.Index, true);
                    dataGridView1.RectangleToClient(rec);
                    if (col.Name == "01.01.2007")
                    {

                        anfang.X = rec.Left + rec.Width / 2;
                        anfang.Y = rec.Top + rec.Height / 2;
                    }

                    if (col.Name == "18.01.2007")
                    {
                        ende.X = rec.Left + rec.Width / 2;
                        ende.Y = rec.Top + rec.Height / 2;
                    }
                }
                if (anfang.X >= 0 && ende.X >= 0)
                {
                    pen.StartCap = LineCap.DiamondAnchor;
                    pen.EndCap = LineCap.DiamondAnchor;
                    e.Graphics.DrawLine(pen, anfang, ende);
                }
            }

Wäre echt super wenn mir einer helfen könnte, kann es mir nicht erklären, warum er ab dem 18.01.2007 nur noch die 0 für die X und Y Koordinate ermittelt.

MfG

02.08.2007 - 15:29 Uhr

Da habe ich auch schon dran gedacht, dass dort mein Fehler liegt.

Blöde frage, aber wie erzähl ich ihm denn das er an der Celle vom 03.01.2007 anfangen soll mit zeichnen? Ich komme da einfach nicht drauf, vielleicht sitze ich auch schon zu lange daran, dass ich da nicht drauf komme.

02.08.2007 - 15:00 Uhr

Hi Zusammen,

vielleicht kann mir einer helfen. Ich habe ein DataGridView. In den ColumnHeaderText steht fü jede Spalte ein Datum drinn.

Ich möchte gerne das z. B. vom 03.01.2007 bis 09.01.2007 eine Linie gezeichnet wird, leider beginnt er bei mir immer in der ersten Spalte, also auch in der ersten Celle, statt die Celle vom 03.01.2007!

Wie bekomme ich es denn hin, dass er mit dem Zeichnen in der Celle vom 03.01.2007 anfängt?

Hier ist mein Code:


private void dataGridView1_Paint(object sender, PaintEventArgs e)
        {
            int a = 0;
            int en = 0;
            Pen pen = new Pen(Brushes.Black, 8);
            DataGridViewRow row = dataGridView1.Rows[0];
            int anzahl = 0;
            int width = 0;
            foreach (DataGridViewColumn col in dataGridView1.Columns)
            {
                if (col.Name == "03.01.2007")
                {
                    a = col.Index;
                }
                if(col.Name == "09.01.2007")
                {
                    en = col.Index;
                }
            }
            anzahl = (en-a) + 1;
            for(int i = 0;i<anzahl;i++)
            {
                width += dataGridView1.Columns[i].Width;
            }
            
            pen.StartCap = LineCap.DiamondAnchor;
            Rectangle rect = dataGridView1.GetRowDisplayRectangle(row.Index,true);
            e.Graphics.DrawLine(pen, dataGridView1.RowHeadersWidth * 2, rect.Y + (row.Height / 2), width, rect.Y + (row.Height / 2));
        }

Wäre echt super nett wenn mir da jemand helfen könnte 🙂

MfG

01.08.2007 - 14:14 Uhr

Hi Zusammen,

ich bin jetzt schon ein paar Tage dabei in einer Row in DataGridView eine Linie zu zeichnen. Für die ganz Linie klappt es auch wunderbar. Nun möchte ich aber gerne das er nur über ganz bestimmt Spalten in der Row die Linie zeichnet.

Hat jemand ein Tipp für mich wie ich da ran gehen muss? Die Spalten müssen doch bestimmt irgendwie angesprochen werden?

Ich habe in den Columns verschiedene Datum stehen und die Columns heißen auch so. Jetzt würde ich halt gerne z.B. vom 03.01.2007 bis zum 08.01.2007 eine Linie zeichnen. Leider komme ich darauf wie ich das am besten machen kann?!

Hier mein Code für die ganze Zeile, den habe ich hier gefunden:


string start = "03.01.2007";
DataGridViewColumn col = dataGridView1.Columns[0];//Hier vielleicht was falsch??
if (col.Name == start)
{
       Pen pen = new Pen(Brushes.Black, 8);
       int width = 0;
       DataGridViewRow row = dataGridView1.Rows[0];
       for (int i = 0; i < dataGridView1.Columns.Count; i++)
       {
             width += dataGridView1.Columns[i].Width;
        }
        pen.StartCap = LineCap.DiamondAnchor;
        Rectangle rect = dataGridView1.GetRowDisplayRectangle(row.Index, true);
        e.Graphics.DrawLine(pen, (dataGridView1.RowHeadersWidth * 2), rect.Y +      (row.Height / 2), width - 200, rect.Y + (row.Height / 2));
}

Wäre nett wenn mir jemand einen rat oder Tipp geben könnte

MfG

01.08.2007 - 12:26 Uhr

hi web,

so habe es jetzt hinbekommen, danke schön für den Tipp und hilfe

Hier der Code:


public void CheckedNode(TreeNodeCollection tnc)
        {
            int i = 0;
            foreach (TreeNode node in tnc)
            {
                if (node.Checked)
                {
                    dataGridView1.Rows.Add();
                    dataGridView1.Rows[i].HeaderCell.Value = node.Text;
                    i++;
                }
                
                this.CheckedNode(node.Nodes);
            }
        }

MfG

31.07.2007 - 18:15 Uhr

Hi webstarg,

das werde ich mal testen und versuchen.

Aber sollte noch jemand ein Tipp für mich hat, wäre ich darüber natürlich auch sehr dankbar🙂

MfG

31.07.2007 - 17:49 Uhr

Schonmal danke für die schnelle Antwort, aber leider hilft es nicht ganz so dabei mein Problem zu lösen, kann auch sein das ich mich nicht richtig ausgedrückt habe.

Ich möchte gerne das alle Nodes die ich per Checkboxes gecheckt habe in meinem **DataGridView.rows[].headerCell.value = e.node.text **angezeigt wird.Für jedes Projekt eine row im DataGridview.

Vielleicht sitze ich auch schon zu lange da drann heute, dass ich nicht drauf komme, aber vielleicht kann mir ja doch noch jemand helfen bzw ein Tipp geben.

Werde auf jeden Fall noch weiter versuchen und nachlesen.

MfG

31.07.2007 - 17:14 Uhr

Hallo zusammen,

komme im moment nicht weiter und ich glaube es ist auch gar nicht so schwer, aber vielleicht kann mir einer weiterhelfen.

Ich habe ein TreeView mit zwei Nodes(Teile und Projekt) unter Teile sind dann verschiedene Name der Teile aufgelistet ebenso bei den Projekten.

Nun möchte ich gerne, den Name der jeweiligen Teile bzw. Projekte in meinem DataGridView.Rows[?].HeaderCell.Value = e.Node.Text anzeigen lassen.

Mache ich es mit einem Projekt dann klappt es auch wunderbar. Allerdings soll es auch bei mehreren ausgewählten Projekten funktionieren, da habe ich hier etwas gefunden mit Checked. Und das ist der Punkt an dem ich nicht weiter komme, stehe vollkommen auf den schlau.

Hier der Code für ein Projekt:


private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node.IsSelected == true)
            {
                dataGridView1.Rows[0].HeaderCell.Value = e.Node.Text;
            }
        }

Wollte eigentlich die gecheckten Nodes zählen und dann über eine for-schleife die gecheckten Nodes der Datagridview zuordnen. Aber irgendwie klappt es nicht.

Hat vielleicht jemand ein Tipp für mich bzw. mach ich was falsch?

MfG

24.07.2007 - 15:25 Uhr

Hi xxxprod und winsharp,

das werde ich mir doch glatt mal anschauen eure Steuerelemente.

@xxxprod Wie bist du denn da ran gegangen bei deinem DataGridView?

Gruß

24.07.2007 - 14:50 Uhr

Hi Zusammen,

gibts vielleicht ein anderes Steuerelement bei dem man colspan anwenden kann?

Mit DataGridView scheint es nicht wirklich zu gehen, es sei denn das man es selber Zeichnet.

Hat jemand vielleicht ein Tipp?

Gruß

Hi Zusammen,

habe da mal eine kurze frage. Ich möchte im DataGridView eine Spalte mit Überschrift z.B. "Januar" und da der Monat ja 31 Tage hat, sollen die Tage natürlich unterteilt sein. Also Column Januar und in der nächsten Zeile sollen dann die Tage aufgelistet werden in einzelnen Cells.

Gibts beim DataGridView etwas wie colspan beim Html?

Also eine Überschrift über mehrere Spalten so ungefähr. Ich hoffe ich habe mich einigermassen verständlich ausgedrückt 🙂

Gruß

Hallo Herbivore,

ich würde gerne mal ein paar ergebnisse sehen wenn ich mein Code Kompiliere, aber das kann man wohl nicht so richtig. Daher denke ich das ich irgendwie auf den falschen Weg bin. Daher auch meine Frage mit der .dll einbinden 🤔

habe da noch nicht richtig drüber nachgedacht:-(, aber ich denke mal, dass ich es selber zeichnen muss.

Nun ja, ich möchte gerne UserControl schreiben von einem DataGidView. Das soll dann ein mehr oder weniger Kalender darstellen. In den Coumns sollen die Monate und die Tage stehen evtl. auch noch das Datum(z.B. 18.07). Da drunter soll dann ein Balken über einen bestimmten Zeitraum dargestellt werden. Dies nur mal kurz und grob wie es aussehen soll.

Dieses Control soll mir eine Übersicht zur Verfügung stellen. Das war so mein Ansatz. Und ich hatte mir gedacht, dass ich mir so eins selber schreibe 🙂! Weiß nur nicht so richtig wie man da so ran geht:-(! Bin ich denn so einigermassen auf den richtigen weg mit meinem Code.

Werde mir auf jeden Fall deine Links nochmal genauer anschauen🙂!

MfG

Hallo zusammen,

hat vielleicht jemand eine gute Seite, wo ich nachlesen kann, wie ich am besten ein eigenes Usercontrol schreiben kann?

Bin gerade dabei eins zu schreiben. Es soll eins so ähnlich wie Kalender sein.
Komme aber da nicht so richtig weiter und habe bisher nichts gefunden wie ich da am besten ran gehen kann.

Hier ist so mein ansatz:


namespace Visuelle_Projektplanung
{
    public class Kalender : DataGridView 
    {        
        private int k_jahr, k_viertel;
        private string k_blockFarbe,k_toggleFarbe, k_cellWidth, k_cellHight, k_blankGifPath;
        string[] k_namen;
        int k_KeineTage;

        public Kalender()
        {
            k_namen = new string[3];
        }

        #region Public Proberties

        //gets sets aus der Tabelle???

        [Bindable(true), Category(), DefaultValue(1)]
        public int Viertel
        {
            get
            {
                return k_viertel;
            }

            set
            {
                k_viertel = value;
            }
        }

        [Bindable(true), Category(), DefaultValue("")]
        public int Jahr
        {
            get
            {
                return k_jahr;
            }

            set
            {
                k_jahr = value;
            }
        }

        [Bindable(true), Category(), DefaultValue("Rot")]
        public string BlockFarbe
        {
            get
            {
                return k_blockFarbe;
            }

            set
            {
                k_blockFarbe = value;
            }
        }

        [Bindable(true), Category(), DefaultValue("15")]
        public int CellWidth
        {
            get
            {
                return int.Parse(k_cellWidth);
            }

            set
            {
                k_cellWidth = value.ToString();
            }
        }

        [Bindable(true), Category(), DefaultValue("15")]
        public int CellHeight
        {
            get
            {
                return int.Parse(k_cellHight);
            }

            set
            {
                k_cellHight = value.ToString();
            }
        }

        [Bindable(true), Category(), DefaultValue("#dcdcdc")]
        public string ToggleFarbe
        {
            get
            {
                return k_toggleFarbe;
            }

            set
            {
                k_toggleFarbe = value;
            }
        }

        [Bindable(true), Category(), DefaultValue("#dcdcdc")]
        public string BlankGifPath
        {
            get
            {
                return k_blankGifPath;
            }

            set
            {
                k_blankGifPath = value;
            }
        }

        #endregion

        #region Hilfs Funktionen

        private void RechteSeite()
        {
            int monat;
            string wochentag;
            bool woche = false;
            ViertelHelfer viertel = new ViertelHelfer(2006, 2);
            DataGridView dgv = new DataGridView();

            for (int i = 1; i < 3; i++)
            {
                monat = i + (3 * (viertel.ViertelIndex - 1));
                //Kalender.Columns.Add(viertel.AlleTageImMonat(monat).ToString(),typeof(string));
                //gridView.Columns.Add(viertel.AlleTageImMonat(monat).ToString());
                foreach(char zahl in viertel.AlleTageImMonat(monat).ToString())
                {
                    dgv.Columns.Add("TagesZahl", zahl.ToString());
                }
                //col. (viertel.AlleTageImMonat(monat).ToString());
            }
            

            for (int i = (3 * viertel.ViertelIndex - 2); i <= (3 * viertel.ViertelIndex); i++)
            {
                for (int j = 1; j <= viertel.AlleTageImMonat(i); j++)
                {
                    wochentag = viertel.getTageName(i, j);

                    if (wochentag == "Mo")
                    {
                        woche = !woche;
                    }
                }
            }
        }

        #endregion

        #region ViertelHelfer
        private class ViertelHelfer
        {
            private int k_jahr;
            private int k_viertel;
            private string[] k_namen = new string[3];
            private int k_KeineTage;

            public ViertelHelfer()
            {
            }

            public ViertelHelfer(int jahr, int viertel)
            {
                k_jahr = jahr;
                k_viertel = viertel;
                k_namen = getViertelName();
                k_KeineTage = getTageImViertel(k_jahr, k_viertel);
            }

            public int Jahr
            {
                get
                {
                    return k_jahr;
                }
            }

            public int ViertelIndex
            {
                get
                {
                    return k_viertel;
                }
            }

            public string[] Namen
            {
                get
                {
                    return k_namen;
                }
            }

            public int Tage
            {
                get
                {
                    return k_KeineTage;
                }
            }

            public string GetMonatsName(int i)
            {
                return k_namen[i - 1];
            }

            public int AlleTage()
            {
                int ReturnValue = 0;

                switch (k_viertel)
                {
                    case 1:
                        ReturnValue = DateTime.DaysInMonth(k_jahr, 1);
                        ReturnValue += DateTime.DaysInMonth(k_jahr, 2);
                        ReturnValue += DateTime.DaysInMonth(k_jahr, 3);
                        break;
                    case 2:
                        ReturnValue = DateTime.DaysInMonth(k_jahr, 4);
                        ReturnValue += DateTime.DaysInMonth(k_jahr, 5);
                        ReturnValue += DateTime.DaysInMonth(k_jahr, 6);
                        break;
                    case 3:
                        ReturnValue = DateTime.DaysInMonth(k_jahr, 7);
                        ReturnValue += DateTime.DaysInMonth(k_jahr, 8);
                        ReturnValue += DateTime.DaysInMonth(k_jahr, 9);
                        break;
                    case 4:
                        ReturnValue = DateTime.DaysInMonth(k_jahr, 10);
                        ReturnValue += DateTime.DaysInMonth(k_jahr, 11);
                        ReturnValue += DateTime.DaysInMonth(k_jahr, 12);
                        break;
                }

                return ReturnValue;
            }

            public int AlleTageImMonat(int i)
            {
                return DateTime.DaysInMonth(k_jahr,i);
            }

            public string getTageName(int monat, int tag)
            {
                string ReturnValue = string.Empty;
                DateTime t = new DateTime(k_jahr, monat, tag);
                switch (t.DayOfWeek)
                {
                    case
                    DayOfWeek.Monday: ReturnValue = "Mo";
                        break;
                    case
                    DayOfWeek.Tuesday: ReturnValue = "Di";
                        break;
                    case
                    DayOfWeek.Wednesday: ReturnValue = "Mi";
                        break;
                    case
                    DayOfWeek.Thursday: ReturnValue = "Do";
                        break;
                    case
                    DayOfWeek.Friday: ReturnValue = "Fr";
                        break;
                    case
                    DayOfWeek.Saturday: ReturnValue = "Sa";
                        break;
                    case
                    DayOfWeek.Sunday: ReturnValue = "So";
                        break;
                }
                return ReturnValue;
            }

            private string[] getViertelName()
            {
                string[] ReturnValue = new string[3];

                switch (k_viertel)
                {
                    case 1:
                        ReturnValue[0] = "Januar";
                        ReturnValue[1] = "Februar";
                        ReturnValue[2] = "März";
                        break;
                    case 2:
                        ReturnValue[0] = "April";
                        ReturnValue[1] = "Mai";
                        ReturnValue[2] = "Juni";
                        break;
                    case 3:
                        ReturnValue[0] = "Juli";
                        ReturnValue[1] = "August";
                        ReturnValue[2] = "September";
                        break;
                    case 4:
                        ReturnValue[0] = "Oktober";
                        ReturnValue[1] = "November";
                        ReturnValue[2] = "Dezember";
                        break;
                }
                return ReturnValue;
            }

            private int getTageImViertel(int jahr, int viertel)
            {
                DateTime dtStart, dtEnde;
                if (viertel < 4)
                {
                    dtStart = new DateTime(jahr, (3 * viertel - 2), 1);
                    dtEnde = new DateTime(jahr, (3 * viertel - 2) + 3, 1);
                }
                else
                {
                    dtStart = new DateTime(jahr, (3 * viertel - 2), 1);
                    dtEnde = new DateTime(jahr + 1, 1, 1);
                }

                TimeSpan ts = new TimeSpan(dtEnde.Subtract(dtStart).Ticks);
                return ts.Days;
            }

            public int getSpaltenIndex(string tag)
            {
                DateTime dt = DateTime.Parse(tag);
                int offset = 0;
                int ReturnValue = 0;

                for (int i = 1; i < k_viertel; i++)
                {
                    offset += getTageImViertel(k_jahr, i);
                }

                ReturnValue = (dt.DayOfYear - 1) - offset;

                if (ReturnValue < 0)
                {
                    ReturnValue = 0;
                }

                if (ReturnValue > getTageImViertel(k_jahr, k_viertel))
                {
                    ReturnValue = getTageImViertel(k_jahr, k_viertel);
                }

                return ReturnValue;
            }
        }
        #endregion
    }

Wie gesagt komme da nicht so richtig weiter. Habe auch irgendwo was gelesen, dass ich diese Klasse dann als .dll einbinden muss. Sehe ich das richtig?

Wäre echt klasse wenn mir einer eine gute Seite sagen kann, wo es erklärt ist, wie meine eigene UserControll anfertigt und einbindet.

Danke im voraus.

Gruß

Hi zusammen nochmal,

habe jetzt eine Verbindung hinbekommen. Hatte wohl doch den SQLExpress Server, sorry:-(!
Habe jetzt

server=.\\SQLExpress 

angegeben. Nun klappts.

Danke an alles für die hilfe

Gruß Olli

Hi Bernd,

mit dem SQL Server Management Studio Express komme ich rauf bzw bekomme eine Verbindung.

Habe eine SQL Server 2005. Ich arbeite nur mit meinem Laptop, versuche also nicht von einem anderen Rechner drauf zugreifen. Weiß echt nicht woran es liegt. Muss auch dazu gestehen, dass ich mich nicht sehr gut mir SQL Server auskenne.

Wollte alles nur Lokal bearbeiten. Habe in der Datenbank MyCompany zwei Tabellen mit denen ich arbeiten wollte. Und nun bekomme ich keine Verbindung:-(

Wo stelle ich denn Browser- Dienst extra ein? Ich glaube ich habe schon alles aktiviert, bin fast alles durchgegangen und habe alles aktiviert. Ich hoffe ich habe nicht vergessen. Ich glaube das mit dem Browser- Dienst habe ich noch nicht

Gruß Olli(Big)

Hi zusammen,

bekomme keine Verbindung zum SQL Server 2005 auf meinem Laptop.

Die Fehlermeldung lautet so:
Fehler beim Herstellen einer Verbindung mit dem Server. Beim Herstellen einer Verbindung mit dem SQL Server 2005 kann dieser Fehler dadurch verursacht werden, dass unter den SQL Server-Standardeinstellungen Remoteverbindungen nicht zulässig sind!

Habe mich schon über SQL-Authentifizierung angemeldet klappt troztdem nicht.


            try
            {
                SqlConnection con = new SqlConnection();
                con.ConnectionString = "Data Source=(local);" +
                                       "Database=MyCompany;" +
                                       "Trusted_Connection=false;" +
                                       "User ID=xxxx;" +
                                       "Password=xxxx;";
                con.Open();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }

Kann mir vielleicht einer helfen, komme einfach nicht weiter?

Mfg

02.05.2007 - 10:46 Uhr

Alles klar, also brauch ich sie nicht in ein DataSet schreiben. Hatte nur gedacht, dass ich sie dort zwischenspeichern muss um mit meinen beiden Tabellen zu arbeiten, da ich in beiden Tabellen Daten habe um ein Endergebnis zu erhalten.

02.05.2007 - 10:26 Uhr

Hallo Zusammen,

habe da mal eine kleine Frage. Habe jetzt schon viel gelesen über DataTable. Entweder habe ich es überlesen oder es geht nicht, wie ich es mir vorstelle.

Ich habe zwei Dateien die ich auslese und in zwei DataTable schreibe. Jetzt möchte ich gerne mit den zwei Tabellen arbeiten. So wie ich es jetzt gelesen habe, muss ich diese Tabellen erst in ein DataSet schreiben um mit denen zuarbeiten via SQL- Abfragen, stimmt das? Oder gibts da eine andere möglichkeit?

MfG

26.04.2007 - 11:04 Uhr

Habe das Problem gefunden und gelöst. Die Übergabe muss der Variablen müssen in der if-Abfrage geschehen und nicht erst ganz am schluss wie in meinem ersten Eintrag.


private void auslesen(string fileName)
        {
            DataTable Teile = new DataTable("TeileTabelle");
            DataTable Dispo = new DataTable("DispoTabelle");
            string word = "";
            char[] deli = new char[] { ';' };

            if (File.Exists(fileName.Substring(0, fileName.Length - 4) + ".csv"))
            {
                fileName = fileName.Substring(0, fileName.Length - 4) + ".csv";
            }
            
                StreamReader sr = new StreamReader(fileName);

                word = sr.ReadLine();

                if (word.Split(deli).Length <= 14)
                {
                    string[] ersteZeile = word.Split(';');

                    foreach (string strSpalte in ersteZeile)
                    {
                        Teile.Columns.Add(strSpalte, typeof(string));
                    }

                    while ((word = sr.ReadLine()) != null)
                    {
                            string[] ersteZeile1 = word.Split(';');

                            DataRow zeile = Teile.NewRow();

                            for (int i = 0; i < ersteZeile1.Length; i++)
                            {
                                for (int j = 0; j < ersteZeile.Length; j++)
                                {
                                    zeile[j] = ersteZeile1[i];
                                    i++;
                                }
                            }
                            Teile.Rows.Add(zeile);
                    }
                    Teile1 = Teile;//Hier muss die Übergabe geschehen für die Tabelle Teile
                }
                else
                {
                    string[] ersteZeile = word.Split(';');

                    foreach (string strSpalte in ersteZeile)
                    {
                        Dispo.Columns.Add(strSpalte, typeof(string));
                    }

                    while ((word = sr.ReadLine()) != null)
                    {
                            string[] ersteZeile1 = word.Split(';');

                            DataRow zeile = Dispo.NewRow();

                            for (int i = 0; i < ersteZeile1.Length; i++)
                            {
                                for (int j = 0; j < ersteZeile.Length; j++)
                                {
                                    zeile[j] = ersteZeile1[i];
                                    i++;
                                }
                            }
                            Dispo.Rows.Add(zeile);
                    }
                    Dispo1 = Dispo;//Hier muss die Übergabe für Dispo geschehen!!!
                }

Auf jeden Fall vielen Dank für die Hilfe!!!

Jetzt werden beide Tabellen gleichzeitig angezeigt🙂

MfG

26.04.2007 - 10:39 Uhr

hi nin,

sorry, stimmt natürlich. In getdata() hole ich mir die beiden Tabellen aus der Klasse


        private void getData()
        {
            switch(fileName.Substring(fileName.Length - 3).ToString().ToLower())
            {
                case "csv":
                    {
                        td.td_auslesen(fileName);
                        dataGridView1.DataSource = td.Teile1;
                        dataGridView2.DataSource = td.Dispo1;
                        break;
                    }
            }
        }

Weiß zwar nicht ob es weiterhilft, ich denke mal schon. Hier ist dann nochmal die Klasse in der ich die Dateien auslese.


        private void auslesen(string fileName)
        {
            DataTable Teile = new DataTable("TeileTabelle");
            DataTable Dispo = new DataTable("DispoTabelle");
            string word = "";
            char[] deli = new char[] { ';' };

            if (File.Exists(fileName.Substring(0, fileName.Length - 4) + ".csv"))
            {
                fileName = fileName.Substring(0, fileName.Length - 4) + ".csv";
            }
            
                StreamReader sr = new StreamReader(fileName);

                word = sr.ReadLine();

                if (word.Split(deli).Length <= 14)
                {
                    string[] ersteZeile = word.Split(';');

                    foreach (string strSpalte in ersteZeile)
                    {
                        Teile.Columns.Add(strSpalte, typeof(string));
                    }

                    while ((word = sr.ReadLine()) != null)
                    {
                        //if (word.Split(deli).Length <= 14)
                        //{
                            string[] ersteZeile1 = word.Split(';');

                            DataRow zeile = Teile.NewRow();

                            for (int i = 0; i < ersteZeile1.Length; i++)
                            {
                                for (int j = 0; j < ersteZeile.Length; j++)
                                {
                                    zeile[j] = ersteZeile1[i];
                                    i++;
                                }
                            }
                            Teile.Rows.Add(zeile);
                        //}
                    }
                }
                else
                {
                    string[] ersteZeile = word.Split(';');

                    foreach (string strSpalte in ersteZeile)
                    {
                        Dispo.Columns.Add(strSpalte, typeof(string));
                    }

                    while ((word = sr.ReadLine()) != null)
                    {
                        //if (word.Split(deli).Length <= 14)
                        //{
                            string[] ersteZeile1 = word.Split(';');

                            DataRow zeile = Dispo.NewRow();

                            for (int i = 0; i < ersteZeile1.Length; i++)
                            {
                                for (int j = 0; j < ersteZeile.Length; j++)
                                {
                                    zeile[j] = ersteZeile1[i];
                                    i++;
                                }
                            }
                            Dispo.Rows.Add(zeile);
                        //}
                    }
                }
            //sr.Close();
            Teile1 = Teile;
            Dispo1 = Dispo;
            sr.Close();
        }

Gehe ich denn überhaupt richtig daran? Nicht das ich völlig auf der falschen Spur bin?

MfG

26.04.2007 - 10:21 Uhr

Hallo zusammen,

habe da ein kleines Problem, bei dem ich nicht weiter komme. Ich möchte zwei Dateien auslesen und sie dann nachher in zwei verschiedene DataGridview anzeigen lassen. Ich gehe folgendermassen vor: Ich öffne über eine openfiledialog zwei dateien aus. Über getdata() gelange ich dann in die Klasse wo die Dateien ausglesen werden.


fileNames = openFileDialog1.FileNames;

foreach (string fileName1 in fileNames)
{
      fileName = fileName1;
      getData();
}

Das auslesen klappt ja auch wunderbar, nur wird mir immer nur eine Datei ausgegeben. Ist ja im Grunde auch klar, da die erste Datei wieder überschreiben wird, wenn die zweite gelesen wird. Hat jemand eine Idee, wie man das lösen könnte, oder muss ich die beiden Dateien in zwei unterschiedliche Klassen übergeben?
Wäre schön wenn mir einer dabei helfen könnte oder mir ein Tipp geben kann wie man das am besten lösen kann🙂

MfG

Hi GarlandGreene,

super danke dir für die schnelle hilfe und hinweis, jetzt funktioniert es!

MfG

Hallo zusammen,

ich steh ein wenig mehr auf den Schlauch. Ich bekomme es nicht hin, dass die Zeilen aus meiner .csv in der DataTable übernommen werden. Es wird nur die letzte Zeile angezeigt. Hat jemand eine Idee, wie ich es hinbekomme? Habe schon sehr viel nachgelesen aber leider nichts gefunden.

Ich lese eine .csv aus. Die erste Zeile schreibe ich die Columns, was auch wunderbar klappt. Die anderen Zeilen sollen dann dem entsprechend in die DataTable geschrieben werden. Für jede Column die Daten in der Zeile schreiben.

Hier ist mein Code:


DataTable Teile = new DataTable("TeileTabelle");
DataRow zeile = Teile.NewRow();

string[] ersteZeile = word.Split(';');

                    foreach (string strSpalte in ersteZeile)
                    {
                        Teile.Columns.Add(strSpalte, typeof(string));
                    }

                    while ((word = sr.ReadLine()) != null)
                    {
                        if (word.Split(deli).Length <= 14)
                        {
                            string[] ersteZeile1 = word.Split(';');
                            
                            for (int i = 0; i < ersteZeile1.Length; i++)
                            {
                                for (int j = 0; j < ersteZeile.Length; j++)
                                {
                                    zeile[j] = ersteZeile1[i];
                                    i++;
                                }
                            }
                        }
                        Teile.Rows.Add(zeile);
                    }

Vielleicht gehts ja auch einfacher.

Wäre schön wenn mir einer auf die Sprünge helfen kann.

MfG

Hi Kani,

danke für den Tip bzw hilfe klappt wunderbar.

Jetzt muss ich nur nochmal sehen wie ich es anstelle das er wirklich nur die erste Zeile liest. In den weiteren Zeilen meiner .csv sind die Daten die ich in den Zeilenweise in den Spalten meiner DataTable schreiben will.

MfG

Hi zusammen,

habe da mal eine Frage bezüglich der DataTable.

Ich habe eine .csv die auch auslese mit .split. Ich habe 16Spalten in meiner .csv. Wenn ich jetzt eine DataTable anlegen, muss ich dann jede einzelne Spalte im Code definieren? Wie es in der Doku steht?
Gibts da keine einfachere Lösung? Habe leider bisher noch nichts gefunden. In der Toolbox habe ich zu mindestens nichts gefunden.

MfG

Hi zusammen,

habe da mal ein paar allgemeine fragen.

Habe eine TreeView mit verschiedene Knoten und Unterknoten, bei einer Auswahl von einem Knoten, würde ich gerne in einer Listview die Daten anzeigen lassen.

Mit Daten sind gemeint, das z.B. an bestimmten Tage Ware ankommen und an bestimmten Tage Ware wieder ausgeliefert wird.

Diese Daten würde ich gerne in einer Listview anzeigen lassen an welchen Tagen was passiert, in Form von einem Block über Tage der farblich angezeigt wird für diesen Tag.

Ist es möglich das man in der Listview die Daten von der MonthCalander anzeigen lässt? Das in den Columns die Tage oder Wochen oder Monate angezeit werden und dementsprechend Items hat?

Ich hoffe es war einigermassen verständlich.

MfG

Hi Borg,

da habe ich mich auch schon drüber gewundert, laut dem Algorithmus den ich gefunden habe, werden die Prüfungen so abgfragt. Hatte auch schon versucht sie anders so prüfen, leider hat es nicht richtig funktioniert. Vielleicht eine kleine Erklärung zu r[ , ]:
Es soll bei diesem Algorithmus drei Zustände geben:
**Z1: r[i,0], r[i,1] == 0 ** Knoten v_ wird einzeln vom Depot aus angefahren und ist Endknoten einer Tour

Z2: r[i,0] != 0, r[i,1] == 0 Knoten v_ ist Endknoten einer Tour

**Z3: r[i,0], r[i,1] != 0 ** Knoten v_ ist innerer KNoten einer Tour.

Eigentlich sollten keine Rundungsfehler auftreten, da alle keine Kommazahlen sind.

Vielleicht hat ja noch jemand eine Idee, wo ich mir den Algorithmus anschauen kann?!

MfG

Hi herbivore,

das habe ich mir auch schon fast gedacht, so ein mist bzw habe ich vermutet. Es kann dann ja eigentlich nur da liegen wo die Touren zusammengelegt werden. Leider habe ich es schon so oft durch gedebuggt, dass ich es glaub ich gar nicht mehr sehe. Ich werde euch mal den Teil zeigen vom Code, indem ich den Fehler vermute, vielleicht findet ihr den ja.


k = 0;
            do
            {                              //DIE ZUORDNUNG MUSS GEPRÜFT WERDEN!!!!!
                i_m = iindex[k];
                j_n = jindex[k];
                
                if(Convert.ToInt32(menge[z[i_m ]]) + Convert.ToInt32(menge[z[j_n]]) <= Convert.ToInt32(txt_b_menge.Text) &&
                   Convert.ToInt32(standzeit[z[i_m]]) + Convert.ToInt32(standzeit[z[j_n]]) + sv[k] <= Convert.ToInt32(txt_b_laenge.Text) &&
                   r[i_m ,0] * r[i_m ,1] == 0 && r[j_n ,0] * r[j_n ,1] == 0 &&
                   z[i_m] != z[j_n])
                {
                    if(r[i_m ,0] == 0)
                    {
                        r[i_m ,0] = j_n;
                    }
                    else
                    {
                        r[i_m ,1] = j_n;
                    }

                    menge[z[j_n]] = Convert.ToInt32(menge[z[i_m]]) + Convert.ToInt32(menge[z[j_n]]);
                    standzeit[z[j_n]] = Convert.ToInt32(standzeit[z[i_m]]) + Convert.ToInt32(standzeit[z[j_n]]) + sv[k];//Convert.ToInt32(standzeot[z[i_m],0] + standzeit[z[j_n],0])
                    z[i_m] = z[j_n];
                    v = r[i_m ,0];
                    w = i_m;

                    if(v != 0)
                    {
                        z[v] = z[j_n];
        
                        while (r[v, 0] * r[v, 1] != 0)
                        {
                            if (r[v , 0] == w)
                            {
                                z[r[v , 1]] = z[j_n];
                                w = v;
                                v = r[w , 1];
                            }
                            else
                            {
                                z[r[v , 0]] = z[j_n];
                                w = v;
                                v = r[w , 0];
                            }
                        }
                    }
                    if(r[v,0] * r[v,1] == 0)
                    {
                        if(r[j_n ,0] == 0)
                        {
                            r[j_n  ,0] = i_m;
                        }
                        else
                        {
                            r[j_n  ,1] = i_m;
                        }
                    }
                }
                k += 1;
            }
            while(k < anzKnotenP);

Ich werde auf jeden Fall nochmal weiter debuggen. Vielleicht finde ich es ja.
Noch ne kleine Erläuterung zu i_m und j_n, die kommen von Iindex und Jindex von der Matrix in denen die savingwerte sind.
Ich hoffe es einigermassen verständlich.

MfG myBig?

Hi zusammen,

ich habe da mal eine kleine Frage. Kennt sich jemand mit dem Algorithmus von Clarke und Wright aus(Saving- Algorithmus)?

Zu kleinen Erläuterung:
Es bestehen z. B. 6Knoten und ein Depot. Jeder Knoten wird einmalig vom Depot angefahren, dananch werden daraus Touren berechnet unter bestimmt Voraussetzungen wie Tourenlänge und die Kapazität der Fahrzeuge, um zwei Touren zu verbinden müssen die Knoten jeweils Endknoten deren Touren sein. Ich hoffe ich konnte es einigermaßen erklären.

Ich habe jetzt das Problem das diese Algorithmus ein Knoten "verschluckt" er existiert irgenwie nicht mehr.

Wäre auch dankbar wenn jemand ein Tipp hat wo ich mir den Algorithmus nochmal genauer anschauen kann. Hab schon gegooglet, leider nichts ordentliches gefunden.

MfG

Hi blackcoin,

sehr gute Idee von dir. Da bin ich gar nicht drauf gekommen. Auf jeden Fall Funktioniert es. Ich danke dir. Wünsche dir noch einen schönen Abend.

MfG

Meine Klasse sieht so aus


public class quicksort : IComparer
    {
        public int[] mySv;
        public int[] myIindex;
        public int[] myJindex;

        
            int IComparer.Compare(Object x, Object y)
            {
                return ((new CaseInsensitiveComparer()).Compare(y, x));
            }
        

        public void Quicksort(int[] sv, int[] iindex, int[] jindex)
        {
            int[] mysv = sv;
            int[] myiindex = iindex;
            int[] myjindex = jindex;
            IComparer myComperer = new quicksort();

            Array.Sort(mysv, myiindex,myComperer);
            //Array.Sort(mysv, myjindex,myComperer);

            mySv = mysv;
            myIindex = myiindex;
            myJindex = myjindex;
        }
    }

Jetzt ist halt die Frage, ob man jindex ebenfalls sortieren kann. mysv ist der key und iindex und jindex sollen die values sein.
Für sv und iindex klappt es ja schon. Nur jindex gehört auch noch dazu.

Hallo zusammen,

ich habe da mal eine kleine Frage, ich möchte gerne drei Array sortieren, nach der Methode der **IComparer(key,value). **Mit zwei funktioniert es wunderbar. Jetzt möchte ich noch gerne das dritte Array dazu sortieren. Geht das Überhaupt? Habe da leider nichts gefunden oder ich habe es überlesen:-( das kann auch sein. Für einen Tip wäre ich sehr dankbar.

MfG

28.06.2006 - 21:40 Uhr

super danke schön, hat mehr oder weniger geklappt. Jetzt habe ich leider das Problem, dass der Index ausserhalb des Arraybereichs ist. Wüsste aber jetzt nicht genau woran das liegen kann.

28.06.2006 - 19:35 Uhr

Hallo zusammen,

ich weiß durchaus das es nicht funktioniert aber es muss doch eine Möglichkeit geben, das ich das abfragen kann. Ich habe eine textBox in der ich eine Zahl eingeben will und diese soll mit etwas verglichen werden. Und sobald es ok ist dann gehts halt weiter. Leider kann ich diese Abfrage ja nicht mir machen. Was kann ich da machen, hat jemand ein Tip für mich, steh gerade voll aufm Schlauch. Mein Code sieht so aus:


if (menge[z[i,0],0].ToString() + menge[z[j,1],0].ToString() <= textBox1.Text
{
....
}

Ohne diese Abfrage komme ich leider nicht in den Bereich der wichig ist

Gruß
myBig?

27.06.2006 - 09:02 Uhr

Super danke schön fü die Tipps, jetzt durchläuft der Debugger endlich meine Klasse. Hoffentlich läuft es jetzt auch so wie ich es mir vorstellen.

Wie gesagt, nochmals vielen dank für die Tipps.

Gruß myBig?

27.06.2006 - 08:13 Uhr

Guten Morgen alle zusammen,

ich habe eine Klasse geschrieben die die kürzesten Wege berechnen soll. Jetzt bekomme ich aber eine Exception "Der Index war außerhalb des Arraybereichs". Ich wüsste jetzt aber nicht warum der aus dem Bereich ist, kann mir da einer helfen oder Tipps geben?
Hier ist meine Klasse:


public class Dijkstra
    {
        public int[] my_kw_dist;
        public int[] my_pre;
        public int my_startKnoten;

        public Dijkstra()
        {
        }

        public void dijkstra(int startKnoten,int[] pfeilVektor,int[,] pfeilWerte,
                              int[,] knotenStartEnde)
        {
            int a = startKnoten;
            int m = pfeilWerte.GetLength(0);
            int n = pfeilVektor.GetLength(0)-1;
            int[] kw_dist = new int[n];
            int[] pre = new int[n];
            int knoten;
            int[] j = new int[n];
            int counter = 1;

            for(int i = 0; i<n; i++)
            {
                kw_dist[i] = Int32.MaxValue;
                pre[i] = -1;
                j[i] = 0;
            }

            kw_dist[a-1] = 0;//<--- Hier kommt die Exception 
            j[a-1] = 1;
            knoten = a;

            while(counter >= 1)
            {
                int mymin_dist = Int32.MaxValue;
                for(int i = 0; i<n; i++)
                {
                    if(my_kw_dist[i] < mymin_dist && j[i] == 1)
                    {
                        mymin_dist = my_kw_dist[i];
                        knoten = i+1;
                    }
                }

                try
                {
                    for(int i = pfeilVektor[knoten-1]; i < pfeilVektor[knoten]; i++)
                    {
                        if(kw_dist[knoten-1] + pfeilWerte[i-1,0] < kw_dist[knotenStartEnde[i-1,1]-1])
                        {
                            kw_dist[knotenStartEnde[i-1,1]-1] = kw_dist[knoten-1] + pfeilWerte[i-1,0];
                            pre[knotenStartEnde[i-1,1]-1] = knoten;
                            j[knotenStartEnde[i-1,1]-1] = 1;
                            counter++;
                        }
                    }
                    j[knoten-1] = 0;
                    counter--;
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }
            my_kw_dist = kw_dist;
            my_pre = pre;
            my_startKnoten = startKnoten;

Und hier ein Teil meines Hauptprogramms:


//Variable
...
privat Dijkstra dijkstraAlg = new Dijkstra();
privat ReadNet rn = new ReadNet();
private int[] pfeilVektor;
private int[,] pfeilWerte;
private int[] dist;
private int[] pre;
private int startKnoten;
....

public void getData()
        {
            try
            {
                switch (fileName.Substring(fileName.Length - 3).ToString().ToLower())
                {
                    case "net":
                        {
                            rn.net_kdnData(fileName);
                           // dijkstraAlg.dijkstra(startKnoten, pfeilVektor, pfeilWerte, knotenStartEnde);
                            bezierWerte = rn.bezierWerte;
                            pfeilVektor = rn.pVektor;
                            pfeilWerte = rn.pWerte;
                            knotenInfo = rn.knotenInfo;
                            knotenStartEnde = rn.knotenStartEnde;
                            z = rn.TourNr;
                            anfKnoten = rn.anfKnoten;
                            endKnoten = rn.endKnoten;
                            menge = rn.menge;
                            standzeit = rn.standzeit;
                            dijkstraAlg.dijkstra(startKnoten, pfeilVektor, pfeilWerte, knotenStartEnde);
                            dist = dijkstraAlg.my_kw_dist;//<--An diesem Punkt springt er von der Klasse wieder zurück und geht in die Exception
                            pre = dijkstraAlg.my_pre;
                            break;

Wäre echt super nett wenn mir da einer helfen könnte oder einen Tipp geben kann was ich da falsch gemacht habe. Liegt es vielleicht an

kw_dist[i] = Int32.MaxValue;

in der Klasse?

Gruß myBig?

26.06.2006 - 19:06 Uhr

Hallo Zusammen,

weiß leider nicht wie ich dieses Problem lösen soll. Bekomme wie gesagt diese NullReferenceException, habe auch hier viele Seiten gefunden, leider bekomme ich es trotzdem nicht hin. Vielleicht kann mir einer helfen das wäre nett. Hier mein Code


....
ReadNet rn = new ReadNet();
Saving sv = new Saving();
...

private void fillRout()
        {
            getData();
            menge = sv.menge;
            standzeit = sv.standzeit;
            z = rn.TourNr;
            r = sv.sv_r;
            i = sv.index1;
            j = sv.index1;
            k = sv.index1;
            l = sv.index1;
            v = sv.index1;
            w = sv.index1;
            int n = pfeilVektor.GetLength(0) - 1;
            int depot = n;
            int anzTouren,anzKundenTour;
            object gesamtMenge,gesamtZeit;//object
            int anzKunden = n;
            



                try
                {
                    gesamtMenge = 0;
                    gesamtZeit = 0;
                    anzTouren = 0;
                    do
                    {
                            if (r[k, 1] * r[k, 2] == 0) // <----NullRefrenceException
                            {
                                anzTouren += 1;
                                if (r[k, 1] + r[k, 2] == 0)
                                {
                                    ListViewItem Item = new ListViewItem(anzTouren.ToString());
                                    Item.SubItems.Add(menge[z[k, 1], 0].ToString());
                                    Item.SubItems.Add(standzeit[z[k, 2], 1].ToString());
                                    Item.SubItems.Add(depot.ToString() + " " + k.ToString() + " " + depot.ToString());
                                    listView1.Items.Add(Item);

                                    gesamtMenge = gesamtMenge.ToString() + menge[z[k, 1], 0].ToString();
                                    gesamtZeit = gesamtZeit.ToString() + standzeit[z[k, 2], 1].ToString();
                                }

Gruß myBig?

Hallo zusammen,

habe in meinem Programm ein kleines Problem. Meine Variablen können nicht mit den Operatoren +,-,* usw angewandt werden. Einige Variable habe ich als Object deklariert und andere als int. Hier ein kleiner Code ausschnitt


//Variable
Saving sv = new Saving();
menge = sv.menge;
standzeit = sv.standzeit;

object gesamtMenge,gesamtZeit;


gesamtMenge = gesamtMenge + menge[z[k,1],0];
gesamtZeit = gesamtZeit + standzeit[z[k,2],1];

Sollte ich lieber alle Varibale auf int umstellen damit ich ich diese "mathe" aufgaben rechnen kann, oder besteht da noch eine andere Möglichkeit? Habe leider noch nichts gefunden hier im Forum oder ich habe die falschen Suchkritieren angebeben.

Gruß myBig?

12.06.2006 - 18:11 Uhr

Hallo Herbi,

inc soll eine Variable erhöhen. Ich weiß, dass es mit C# die ++ gibt, aber da kommt eine Fehlermeldung.
Mein Code sieht so aus:


 for(int j = 1; j < n; j++)
            {
                while((i>=m) && (anfKnoten[i] = x))
                {
                    (i,1)++;
                    (x,1)++;
                    pn[j] = i;
                }
                pn[n + 1] = m + 1;
            }

Gruß
myBig?

12.06.2006 - 17:58 Uhr

Hallo Zusammen,

gibts in C#, wie in Delphi, auch die hilfe INC? Wenn ja unter welchem NameSpace finde ich es?

Gruß

myBig?

Hallo herbivore,

die Exception lautet Der Index war ausserhlb des Arraybereichs. Ich denke mal das es daran liegt, dass er nicht in diese Schleife geht in der Klasse:


public void dataConvert()
        {
            object[,] myKnotenInfo = new object[n,4];
            for(int i = 0;i < n;i++)
            {
                myKnotenInfo[i,3] = myStartPunkt[i,3];
            }
            knotenInfo = myKnotenInfo;

Danach springt er gleich in das Hauptprogramm und geht auch nicht in die Schleife rein:


for (string line = sr.ReadLine(); line != null; line = sr.ReadLine())
                        {
                            listView1.Items.Add(line);
                        }

und dann kommt die Exception. Ich hoffe ihr wisst was ich falsch mache.

Gruß myBig?