Avatar billede huusom Nybegynder
23. oktober 2003 - 23:00 Der er 4 kommentarer og
1 løsning

Fra form til form.

Jeg skal have en variabel over fra form1 til form2 og ned i en label.

Jeg har læst lidt på nettet og kopieret noget kode.
Men nu kommer den med en fejlbeskrivelse jeg ikke fatter en meter af:
Cannot pass 'Lotto.Form1.pris' as ref or out, because 'Lotto.Form1.pris' is a marshal-by-reference class

Her er lidt af koden.

Form1.cs:
Form2 oForm2 = new Form2();
oForm2.MyParentForm = this;

Form2.cs:
label1.Text =(((Form1)MyParentForm).pris.ToString());

Hvad gør jeg galt....

Sig hvis i skal have mere at vide.
Avatar billede jakobandersen Nybegynder
23. oktober 2003 - 23:06 #1
Definerer du selv MyParentForm?

Se evt. om du kan bruge noget kode fra:
http://activedeveloper.dk/brevkassen/default.asp?category=20&question=410
Avatar billede finger Nybegynder
24. oktober 2003 - 08:27 #2
her er et virkende eksempel på hvordan man kan gøre det:

------form1-----------
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication2
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button button1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;
        private Form2 m_form2;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        public string GetText
        {
            get
            {
                return textBox1.Text;
            }
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // textBox1
            //
            this.textBox1.Location = new System.Drawing.Point(104, 104);
            this.textBox1.Name = "textBox1";
            this.textBox1.TabIndex = 0;
            this.textBox1.Text = "textBox1";
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(112, 168);
            this.button1.Name = "button1";
            this.button1.TabIndex = 1;
            this.button1.Text = "button1";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            m_form2 = new Form2(this);
            m_form2.Show();
        }
    }
}
----------------form1 EOM--------------
----------------form2------------------
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace WindowsApplication2
{
    /// <summary>
    /// Summary description for Form2.
    /// </summary>
    public class Form2 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Label label1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form2()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        public Form2(Form1 Form1_)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            label1.Text = Form1_.GetText;
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if(components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.SuspendLayout();
            //
            // label1
            //
            this.label1.Location = new System.Drawing.Point(96, 96);
            this.label1.Name = "label1";
            this.label1.TabIndex = 0;
            this.label1.Text = "label1";
            //
            // Form2
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.Add(this.label1);
            this.Name = "Form2";
            this.Text = "Form2";
            this.ResumeLayout(false);

        }
        #endregion
    }
}
------------form2 EOM---------------
Avatar billede huusom Nybegynder
24. oktober 2003 - 11:12 #3
moonduck: Ja jeg har selv defineret MyParentForm:
public Form1 MyParentForm;
Jeg prøver at skrive sådan her i form2
label1.Text = Form1_.pris.ToString();
Fordi jeg vil have pris variablen fra Form1 til at skrives i Label1.text i form2
Men den siger hele tiden. Cannot pass 'Lotto.Form1.pris' as ref or out, because 'Lotto.Form1.pris' is a marshal-by-reference class
Avatar billede huusom Nybegynder
24. oktober 2003 - 13:23 #4
Jeg fandt selv ud af det... men ellers tak for hjælpen
Avatar billede knaldeglad Nybegynder
21. marts 2006 - 08:46 #5
ok. og hvad fandt du såå ud af..... ?!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester