Announcement

Collapse
No announcement yet.

Array Struktur anderer Klasse übergeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Array Struktur anderer Klasse übergeben

    Hallo!

    Ich habe erst seit kurzen angefangen mich mit C# zu beschäftigen.
    In C# gibt es ja keine globale Variablen. Es wird ja alles objektorrientiert programmiert.

    Ich habe ein Problem mit Arrays. Ich habe eine Array [250] mit eine Struktur von 4 Int. Diesen Array-Elementen wurden allen Werten zugewiesen (aus SPS ausgelesen). Diese kann ich auch anzeigen und mit denen auch in dieser Form arbeiten.

    Ich möchte nun mit diesem Array Elementen (incl. Werte) in einem anderen Form (andere Klasse) weiterarbeiten.

    Wie kann ich dieses Array der anderen Form (Klasse) übergeben?
    Wie sieht das ganze im Code aus? Syntax?

    schöne Grüße und vielen Dank

  • #2
    Soll die Form welches das Array erhalten soll neu angelegt werden oder exisitiert sie bereits?

    Comment


    • #3
      Die Form besteht bereits.

      Comment


      • #4
        hast du auf die Form Zugriff? Wenn ja schreib dir eine Methode welcher du dass Array übergibst und ruf diese Methode aus dem Hauptformular auf

        [highlight=c#]
        public partial class Main : Form
        {
        public Main ()
        {
        InitializeComponent();
        }

        private SubForm m_SubForm;

        private void button1_Click(object sender, EventArgs e)
        {
        if (m_SubForm == null || !m_SubForm.Visible)
        {
        m_SubForm = new SubForm();
        m_SubForm.Show();

        m_SubForm.ShowSomeString("Eins", "Zwei", "Drei");
        }
        else
        {
        m_SubForm.Activate();

        m_SubForm.ShowSomeString("Vier", "Fünf", "Sechs");
        }
        }
        }

        public partial class SubForm : Form
        {
        public SubForm()
        {
        InitializeComponent();
        }

        public void ShowSomeString(params string[] list)
        {
        this.listBox1.Items.Clear();

        foreach (string param in list)
        {
        this.listBox1.Items.Add(param);
        }
        }
        }
        [/highlight]
        Zuletzt editiert von da_halbi; 18.02.2010, 12:14.

        Comment


        • #5
          ich denke schon, das ich auf die Form Zugriff habe. Wie muss dies aussehen?

          Wie kann ich das Array übergen? Mit welcher Methode?

          Wie sieht die Syntax der Übergabe des Arrays aus?

          Comment


          • #6
            Wie kann ich das Array übergen? Mit welcher Methode?
            Arrays sind Klassen wie jeder andere Typ auch. Also einfach der Ziel Form eine Methode/Property geben mir dem Array als Parameter und diese dann von der Quellform aus aufrufen.

            Comment


            • #7
              Hier mal eine simple Möglichkeit:
              Code:
              using System;
              using System.Collections.Generic;
              using System.Drawing;
              using System.Windows.Forms;
              
              namespace sample_1
              {
              
              	public partial class MainForm : Form
              	{
              		static int[,] myArray = new int[5,5];
              		
              			
              		public MainForm()
              		{
              			InitializeComponent();
              			
              			for (int x = 0; x < 5; x++)
              				for (int y = 0; y < 5; y++)
              					myArray[x, y] = x * y;
              		}
              		
              		void Button1Click(object sender, EventArgs e)
              		{
              			Form1 f2 = new Form2(myArray);
              			f2.Show();
              		}
              	}
              }
              Code:
              using System;
              using System.Drawing;
              using System.Windows.Forms;
              
              namespace sample_1
              {
              	public partial class Form2 : Form
              	{
              		
              		public Form2(int[,] mainArray)
              		{
              			InitializeComponent();
              			
              			label1.Text = mainArray[4, 3].ToString();
              		}
              	}
              }
              Ich habe also eine MainForm mit einem Button, wenn man den drückt wird Form2 geöffnet, das hat ein Label, dessen Text den Wert des Arrayfeldes[4, 3] anzeigt. Man kann natürlich statt dem Array auch die Adresse der MainForm mitgeben und damit alles in der MainForm ansprechen.

              bye,
              Helmut

              Comment


              • #8
                hallo,

                das ist genau das was ich gesucht habe hwoess.
                Das Array mit Int funktioniert einwandfrei. Nun möchte ich das ganze aber mit einer Array-Struktur aufbauen.


                Ich habe eine FelderDaten.cs mit:

                Code:
                using System;
                using System.Collections.Generic;
                using System.Text;
                
                namespace sample_1
                {
                    /* ------------------------------------------------------------------------ */
                    /// <summary>Struktur Felder</summary>
                    ///
                
                    public struct Felder
                    {
                        /// <summary>Test A</summary>
                        public Int16 a;
                
                        /// <summary>Test B</summary>
                        public Int16 b;
                
                        /// <summary>Test C</summary>
                        public Int16 c;
                
                        /// <summary>Test D</summary>
                        public Int16 d;
                    }
                Nun möchte ich wie vorher hwoess beschrieben hat, das Array mit dieser Struktur übergeben.

                Code:
                        static Felder[] Feld = new Felder[100]; // Feld-Array mit Felder-Daten
                
                
                        public MainForm()
                        {
                            InitializeComponent();
                
                            button1.Click += new EventHandler(button1_Click);
                
                            for (int x = 1; x <101; x++)
                             Feld[x].a = Convert.ToInt16(x);
                             Feld[x].b = Convert.ToInt16(x + 1);
                             Feld[x].c = Convert.ToInt16(x + 2);
                
                        void button1_Click(object sender, EventArgs e)
                        {
                            Form Form2 = new Form2(Feld);
                            Form2.Show();
                        }
                Wie sieht das ganze nun in der Form2 aus??
                Code:
                 public Form2(????)
                        {
                            
                            InitializeComponent();
                     
                            label1.Text = mainArray[1].a.ToString();
                            label2.Text = mainArray[2].b.ToString();
                            label3.Text = mainArray[3].c. ToString();
                
                        }

                Comment


                • #9
                  folgendermaßen:

                  [highlight=c#]
                  public Form2(Felder[] felder)
                  {

                  InitializeComponent();

                  label1.Text = felder[1].a.ToString();
                  label2.Text = felder[2].b.ToString();
                  label3.Text = felder[3].c. ToString();

                  }
                  [/highlight]

                  Comment


                  • #10
                    vielen dank

                    habe den Fehler selber noch gefunden.

                    schöne Grüße

                    Comment

                    Working...
                    X