Avatar billede topsite Nybegynder
23. maj 2003 - 18:28 Der er 22 kommentarer og
1 løsning

Show/Hide forms

private void button1_Click(object sender, System.EventArgs e)
{
if(this.textBox1.Text == "daniel" || this.textBox2.Text == "fisk")
{
this.Hide();
// men hvordan får jeg nu form3.show ?!?!?
}
else
{
MessageBox.Show("Du har ikke indtastet et gyldigt brugernavn eller kodeord, prøv igen!");
}


}
Avatar billede burningice Nybegynder
23. maj 2003 - 18:32 #1
Form3 frm = new Form3();
frm.Show();
Avatar billede topsite Nybegynder
23. maj 2003 - 18:34 #2
Prøver- og tak :)

ps. svar lige :)

har du msn messenger eller icq?
Avatar billede topsite Nybegynder
23. maj 2003 - 18:38 #3
Forresetn, nu nå jeg Hide'er en form, og show'er en anden, og så lukker den der er show'ed, så lukker programmet ikke helt.

Kan man lave en action på "on-close" ?!

på forhånd tak :)
Avatar billede burningice Nybegynder
23. maj 2003 - 18:41 #4
med mindre du har startet nogle tråde, så skulle programmet gerne lukke når du kører en Close() på den klasse din Main() metode er i.
Avatar billede topsite Nybegynder
23. maj 2003 - 18:45 #5
mmm.. Jeg forstår ikke hvor jeg skal placerer Close();?
Avatar billede burningice Nybegynder
23. maj 2003 - 18:51 #6
det gør du enten i en eventhandler til en knap eller et menu-item... dog bliver den autoamtisk kaldt hvis du trykker på det lille kryds oppe i højre hjørne af dit program eller trykker ALT+F4
Avatar billede topsite Nybegynder
23. maj 2003 - 18:56 #7
Mit Program

FORM1
Login: [textbox1.text]
Kode.: [textbox2.text]

if $textbox1.text == "xx" && textbox2.text == "xx" ... bla bla
{
this.Hide();
Form2 frm = new Form2();
frm.Show()
}

Så skjules Form1, og Form2 vises.

[FORM2]
Label1: Hej hej hej

-- Hvis nu jeg så trykker på det lille kryds på form2, så lukker programmet ikke, det ligger stadig og kører .. Hvordan jan jeg lave en - event der hedder onclose{ close(); } eller noget i den stil ?

På forhånd tak
Daniel
Avatar billede burningice Nybegynder
23. maj 2003 - 19:02 #8
det er jo fordi at din form1 stadigvæk kører, du har jo kun hide't den...

det du kan gøre er at sætte en parent-form til form2... mener koden er sådan her

Form2 frm = new Form2(this);

og på form2 laver du så en eventhandler til OnClosing, hvis du sørger for at lukke parent
Avatar billede topsite Nybegynder
23. maj 2003 - 19:28 #9
this.Hide();
Form1 frm = new Form1(this);
//Form1 frm = new Form1();
frm.Show();

giver følgende fejl:
C:\Documents and Settings\Daniel\Dokumenter\Visual Studio Projects\WindowsApplication5\Log på.cs(167): No overload for method 'Form1' takes '1' arguments

Sorry, men er stadig meget n00b i C#

Håber du kan beskrive - lidt mere detaljeret.

På forhånd tak
daniel
Avatar billede burningice Nybegynder
23. maj 2003 - 19:32 #10
pøv den her istedet

Form1 frm = new Form1();
frm.Parent = this;
frm.Show();
Avatar billede topsite Nybegynder
23. maj 2003 - 19:46 #11
this.Hide();
                Form1 frm = new Form1();
                frm.Parent = this;
                frm.Show();

-------------------

Så får jeg denne fejl

An unhandled exception of type 'System.ArgumentException' occurred in system.windows.forms.dll

Additional information: Cannot add a top level control to a control.
Avatar billede burningice Nybegynder
23. maj 2003 - 20:09 #12
blah... jeg er vist lidt træt... Parent er slet ikke til Form

lav hellere din constructor i din Form1, så den kan tage en form som argument:

public class Form1 : Form {
    private Form parentForm;

    public void Form1(Form parent) {
        parentForm = parent;
    }

    private override void OnClosing() {
        parentForm.Close();
    }
}

noget i den retning
Avatar billede topsite Nybegynder
23. maj 2003 - 21:33 #13
private override void OnClosing()
        {
            Application.Exit;
        }

C:\Documents and Settings\Daniel\Dokumenter\Visual Studio Projects\WindowsApplication5\kunder.cs(152): 'WindowsApplication5.Form1.OnClosing()' : virtual or abstract members cannot be private

Prøvede at kalde den public, men det virkede heller ikke

hvorfor er c# så svært :) har selv kodet i delphi i efterhånden 1 år :) syntes form's er lidt nemmere at håndtere deri
Avatar billede topsite Nybegynder
23. maj 2003 - 21:57 #14
Fuck det :) du har hjulpet nok ;)
lav et svar :D
Avatar billede burningice Nybegynder
23. maj 2003 - 22:14 #15
du skal lave den protected ;)

protected virtual void OnClosing(CancelEventArgs e) {
    this.Close();
    base.OnClosing(e);
}

jeg ved nu ikke om det er svært... jeg synes det er meget intuitivt lavet, og der er masser af hjælp at finde i SDK'et
Avatar billede topsite Nybegynder
23. maj 2003 - 22:52 #16
Overstående laver ingen fejl
men den closer ikke hele programmet
Avatar billede topsite Nybegynder
23. maj 2003 - 22:54 #17
C:\Documents and Settings\Daniel\Dokumenter\Visual Studio Projects\WindowsApplication5\kunder.cs(154): 'WindowsApplication5.Form1.OnClosing(System.ComponentModel.CancelEventArgs)' hides inherited member 'System.Windows.Forms.Form.OnClosing(System.ComponentModel.CancelEventArgs)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.

der kommer en fejl
Avatar billede nielsbrinch Nybegynder
23. maj 2003 - 23:32 #18
Jeg synes C# er ufatteligt nemt. Nok det nemmeste sprog nogensinde. (og jeg er LIGE startet på det, så det er ikke fordi jeg kender det jeg synes det er nemt)
Avatar billede topsite Nybegynder
23. maj 2003 - 23:43 #19
Nok bare fordi jeg kommer fra en Delphi-verden :)
Men, i delphi, er det en del nemmere
formX.close;
formX.show;
formX.hide

Meget enkelt, iforhold til C# - men det er jo bare at lære den syntax C# bruger :) så tror jeg det går hurtigt, har kun arbejdet med C# i ca. 1½ time ialt :)
Avatar billede burningice Nybegynder
24. maj 2003 - 09:45 #20
topsite>> som sagt, så skal du lukke din aller første form for at lukke programmet, og ikke bare hide den...

her kommer noget psoudo-kode der gerne skulle vise princippet i hvad jeg har prøvet at forklare dig ;)

form1:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace Midaz.Windows
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button button1;
        /// <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.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(168, 208);
            this.button1.Name = "button1";
            this.button1.TabIndex = 0;
            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, 273);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.button1});
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }
        #endregion

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

form2:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace Midaz.Windows
{
    /// <summary>
    /// Summary description for Form2.
    /// </summary>
    public class Form2 : System.Windows.Forms.Form
    {
        private Form parentForm;
        private System.ComponentModel.Container components = null;

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

            parentForm = parent;
        }

        /// <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()
        {
            //
            // Form2
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 273);
            this.Name = "Form2";
            this.Text = "Form2";
            this.Closing += new System.ComponentModel.CancelEventHandler(this.Form2_Closing);

        }
        #endregion

        private void Form2_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            parentForm.Close();
        }
    }
}
Avatar billede burningice Nybegynder
24. maj 2003 - 09:47 #21
Form1 skal selvfølgelig lige have en

public static void Main() {

}

for at det virker
Avatar billede nielsbrinch Nybegynder
24. maj 2003 - 09:50 #22
lol, på hvilken måde er det der pseudokode?
Avatar billede burningice Nybegynder
24. maj 2003 - 09:53 #23
nielsbrinch>>.. erm, der er ikke nogle labels på form1 ? ;)
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