Avatar billede nima Nybegynder
30. juli 2003 - 02:35 Der er 22 kommentarer og
3 løsninger

Når der trykkes på en knap

Hej.

Jeg er lige gået igang med at programmere i C#. Har siddet og leget lidt med det. Bruger MS Visual Studio .NET, og nu sidder jeg med et lille problem. Har en form hvor jeg har oprettet en knap (button). Det jeg gerne vil have lavet er, at når der trykkes på knappen, åbnes en anden form (som også er lavet)
Avatar billede omen Nybegynder
30. juli 2003 - 05:29 #1
Form1 Main = new Form1;
Main.Show;
Avatar billede medions Nybegynder
30. juli 2003 - 09:41 #2
Fx. Sådan her:

        void cmdAddUserClick(object sender, System.EventArgs e)
        {
            //Henter klassen fra UserConfig.cs
            CUserConfig UserConfig = new CUserConfig();
           
            //Åbner formen CreateUserFrm
            UserConfig.AddUser();           
        }


Og så skal den nye class så se således ud:

amespace NET_IT_Pro {
    using System;
    using System.Data.OleDb;
    using System.Drawing;
    using System.Windows;
    using System.Windows.Forms;
   
    public class CUserConfig : object {

            //Oprettelse af globale komponenter
            Form CreateUserFrm = new Form();
            Button cmdCreateUser = new Button();
            TextBox txtEmpName = new TextBox();
            TextBox txtInit    = new TextBox();
            Label lblEmpname = new Label();
            Label lblInit = new Label();
             
              //Gør MainForm synlig for alle (Globallisering)
              MainForm MainForm = new MainForm();
       
        public void AddUser() {
             
                  //Command knap
                  cmdCreateUser.Text = "Opret";
                cmdCreateUser.Location = new Point(10, 35);
                cmdCreateUser.Click += new EventHandler(cmdCreateUser_Click);
                CreateUserFrm.Controls.Add(cmdCreateUser);
                 
                  //Textfelt EmpName
                  txtEmpName.Location = new Point(90, 35);
                  CreateUserFrm.Controls.Add(txtEmpName);
           
                //Textfelt Init
                txtInit.Location = new Point(90, 90);
                CreateUserFrm.Controls.Add(txtInit);
                 
                  //Label Init
                  lblInit.Text = "Initialer:";
                lblInit.Location = new Point(90, 75);
                CreateUserFrm.Controls.Add(lblInit);
           
                  //Label Empname
                  lblEmpname.Text = "Navn:";
                lblEmpname.Location = new Point(90, 20);
                CreateUserFrm.Controls.Add(lblEmpname);
           
            CreateUserFrm.ClientSize = new System.Drawing.Size(200, 120);
           
            // Centere formen
              CreateUserFrm.StartPosition = FormStartPosition.CenterScreen;
            CreateUserFrm.Show();
        }
    }
}

//>Rune
Avatar billede nima Nybegynder
30. juli 2003 - 12:34 #3
Altså tror ikke det skal være så kompliceret. Har bare en standart form (Form1), hvor jeg har oprettet en knap. Når der trykkes på knappen skal den åbne en anden form (Form2)

Indtil videre ser knappen således ud!


private void button1_Click(object sender, System.EventArgs e)
        {
           
        }
Avatar billede medions Nybegynder
30. juli 2003 - 12:35 #4
private void button1_Click(object sender, System.EventArgs e)
        {
            Form1 Form2 = new Form1;
            Form2.Show;
        }

//>Rune
Avatar billede nima Nybegynder
30. juli 2003 - 12:35 #5
hov lige en ting... Formen skal ikke vises på den eksisterende, men derimod åbne et ny boks!
Avatar billede nima Nybegynder
30. juli 2003 - 12:40 #6
Jeg har fundet et eksempel, og ved i hvertfald at det her stykke kode gør det.. Men det må da kunne gøres simplere!


private void btnLogin_Click(object sender, System.EventArgs e)
        {
            using(LoginDialog ld = new LoginDialog())
            {
                LoginDialogData data = new LoginDialogData();
                if(ld.ShowDialog(this, data) == DialogResult.OK)
                    lblStatus.Text = string.Format("User name: {0}, Password: {1}", data.UserName, data.Password);
            }
        }
Avatar billede medions Nybegynder
30. juli 2003 - 12:44 #7
Øhh, den kode jeg lige har givet dig gør da nøjagtig det du bér om!

//>Rune
Avatar billede nima Nybegynder
30. juli 2003 - 12:57 #8
ok, nu har jeg prøvet det.

private void button1_Click(object sender, System.EventArgs e)
        {
              Form1 Form2 = (new Form1());
                          Form2.Show();
        }

Det virker fint, men problemet er, at den bare åbner samme form 1 igen!
Avatar billede medions Nybegynder
30. juli 2003 - 13:04 #9
Ahh ok ;-)

Sådan her:

private void button1_Click(object sender, System.EventArgs e)
        {
              Form Form2 = new Form();
                          Form2.Show();
        }

//>Rune
Avatar billede nima Nybegynder
30. juli 2003 - 13:07 #10
hehe.. Så nu åbner den en hel ny form! Men jeg ved ikke om du selv har arbejdet med Visual Studio.NET, men ude i siden kan man oprette forms osv. Har oprettet en anden Form (form2) som den skal vise når der trykkes på knappen i form1.
Avatar billede nima Nybegynder
30. juli 2003 - 13:09 #11
her er hele koden for form1




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

namespace WindowsApplication3
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button test;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

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

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

        /// <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.test = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // test
            //
            this.test.Location = new System.Drawing.Point(144, 96);
            this.test.Name = "test";
            this.test.TabIndex = 0;
            this.test.Text = "button1";
            this.test.Click += new System.EventHandler(this.button1_Click);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 273);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.test});
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }
        #endregion

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



        private void Form1_Load(object sender, System.EventArgs e)
        {
       
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            Form Form2 = new Form();
            Form2.Show();
        }

   

   
    }
}
Avatar billede medions Nybegynder
30. juli 2003 - 13:09 #12
Jeg har ikke arbejdet i VS.NET, det er jo dyrt ;o)
Jeg har kun arbejdet i SharpDevlop, men det er nogenlunde det samme!

Du opretter knapper og textboxe osv. sådan her med kode:

Button cmdCreateUser = new Button();
                  //Command knap
                  cmdCreateUser.Text = "Opret";
                cmdCreateUser.Location = new Point(10, 35);
                cmdCreateUser.Click += new EventHandler(cmdCreateUser_Click);
                CreateUserFrm.Controls.Add(cmdCreateUser);

//>Rune
Avatar billede medions Nybegynder
30. juli 2003 - 13:11 #13
Ok, så gør du bare sådan her:


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

namespace WindowsApplication3
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button test;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

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

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

        /// <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.test = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // test
            //
            this.test.Location = new System.Drawing.Point(144, 96);
            this.test.Name = "test";
            this.test.TabIndex = 0;
            this.test.Text = "button1";
            this.test.Click += new System.EventHandler(this.button1_Click);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 273);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.test});
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }
        #endregion

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



        private void Form1_Load(object sender, System.EventArgs e)
        {
       
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            Form Form2 = new Form();
            Form2.Show();
Button cmdCreateUser = new Button();
                  //Command knap
                  Form2.Text = "Dette er en knap";
                Form2.Location = new Point(10, 35);
                Form2.Click += new EventHandler(cmdCreateUser_Click);
                Form2.Controls.Add(Form2);
        }

   

   
    }
}

//>Rune
Avatar billede nima Nybegynder
30. juli 2003 - 13:18 #14
jeg kan ikke rigtig få det til at virke. Der er en eller anden fejl ved "CmdCreateUser_Click".

Men inde i Visual Studio.Net har du ude i siden overblik over forskellige ting. Altså jeg kan oprette fx. en form (det ligner lidt windows stifinder). Når jeg opretter en form, dukker den op som Form2.cs. Også kan jeg dobbeltklikke på den og arbejde med formen! På denne måde kan man skifte mellem de forskellige forme!
Avatar billede medions Nybegynder
30. juli 2003 - 13:19 #15
Min fejl...

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

namespace WindowsApplication3
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button test;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

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

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

        /// <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.test = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // test
            //
            this.test.Location = new System.Drawing.Point(144, 96);
            this.test.Name = "test";
            this.test.TabIndex = 0;
            this.test.Text = "button1";
            this.test.Click += new System.EventHandler(this.button1_Click);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 273);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.test});
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }
        #endregion

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



        private void Form1_Load(object sender, System.EventArgs e)
        {
       
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            Form Form2 = new Form();
            Form2.Show();
Button cmdCreateUser = new Button();
                  //Command knap
                  Form2.Text = "Dette er en knap";
                Form2.Location = new Point(10, 35);
                Form2.Controls.Add(Form2);
        }
    }
}

//>Rune
Avatar billede nima Nybegynder
30. juli 2003 - 13:23 #16
Det virker ikke rigtigt :(

Hvordan laver du selv, fx. når du bare har en standart form hvor der er knap. Når der trykkes på den, så åbner den en anden form (som du har lavet i forvejen hvor der findes yderligere text bokse osv)
Avatar billede medions Nybegynder
30. juli 2003 - 13:25 #17
Det ved jeg heller ikke selv, desvære, jeg kender jo som sagt ikke til VS.NET :(

//>Rune
Avatar billede nima Nybegynder
30. juli 2003 - 13:26 #18
hvad med bare sådan normalt?
Avatar billede medions Nybegynder
30. juli 2003 - 13:29 #19
Jamen det jeg  gør er at jeg opretter en fil ved siden af det oprindelige dokument, opretter ny class i et namespace som hedder det samme som det i MainFormen, herefter bygger jeg min form op i programmering der!

//>Rune
Avatar billede d-fens Nybegynder
30. juli 2003 - 22:25 #20
Hvis du vil åbne en fil der hedder Form2 skal du bruge flg.:

private void button1_Click(object sender, System.EventArgs e)
{
Form frm2 = new Form2();
frm2.Show();
}
Avatar billede omen Nybegynder
30. juli 2003 - 22:31 #21
Ahh, havde næsten ret :)

Men tilføjer den ikke selv '()' når man skifter linie?
Avatar billede nima Nybegynder
31. juli 2003 - 18:47 #22
d-fens>> HELT SIKKERT! TAk tak! har du egentlig nogle gode links man kan lære noget af ? altså mht. c# ?
Avatar billede nima Nybegynder
03. august 2003 - 12:45 #23
Tak for hjælpen drenge, jeg fik næsten det jeg søgte efter!
Avatar billede medions Nybegynder
03. august 2003 - 14:40 #24
Fair nok ;o)

Thx 4 Poinz

//>Rune
Avatar billede nima Nybegynder
04. august 2003 - 03:15 #25
Det var så lidt. Og tak for hjælpen ;)

- Nima
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