Fenster erstellen und anzeigen?



  • Hi,

    ich bin seit 2 Tagen von VC++ auf VC# umgestiegen, da ich hauptsächlich Windows Programme schreibe und ich bei VC# wesentlich mehr Vorteile hab als mit VC++. Nun habe ich mich schon an den bisschen anderen Syntax relativ gut gewöhnt aber ich weiss nicht wie ich ein Fenster erstelle und öffen.

    Also ich hab hier meine Form1 (MainWindow) und habe dann noch eine Form2 geadded. Nun habe ich in Form1 einen button (button1) erstellt und dort auch definiert und EventHandler korrekt erstellt.

    public Form1()
    {
        InitializeComponent();
        this.button1.Click += new EventHandler(button1_Click);
    }
    
    public Form2 myForm;
    
    public void button1_Click(object sender, EventArgs e)
    {
        myForm.Show();
    }
    

    Kompilieren tut er dass ding, aber wenn ich es ausführe und auf den Button klicke kommt immer "Unhandled exception" und zwar:"Object reference not set to an instance of an object." Also ich denke mal dass ich innerhalb eines Projektes in VC# keine Dateien includen muss die eh shcon im Projekt drin sind. Könnte mir da vielleicht einer bisschen weiterhelfen?

    MfG,
    skY!



  • skY! schrieb:

    public Form2 myForm;
    

    Du must das Objekt auch noch erstellen, sprich den Konstruktor aufrufen, und nicht nur eine Variable des Klassentyps erstellen.

    public Form2 myForm = new Form2();
    


  • rofl ich drecksnap ^^ vielen vielen dank 🙂



  • Hi ich hab da auch ne frage:

    das ein neues Fenster aufgeht wenn man auf nen button klickt bekomm ich ja hin, aber ich würde nun gerne, dass nich immer wieder ein neues fenster aufgeht, sondern, dass das bestehende Fenster wieder aktiviert wird wenn man auf den button klickt.
    so weit so gut, das funktioniert auch.
    Mein Neues Fenster heisst Log:
    mein \1:

    private void button2_Click(object sender, System.EventArgs e)
    		{
    			if(Log.Visible)
    			{
    				Log.Activate();
    			}
    			else
    			{
    				Log.Show();
    			}
    		}
    

    Wie der Name schon sagt soll das ein Log-Fenster sein in dem eine grosse Text-Box drin ist, nun wenn ich nun das Fenster mit dem x rechts oben schliesse, dann ist die Log -Variable - verständlicherweise - futsch und bei einem erneuten Klick auf den button stürzt das Programm ab.
    Ich hab folgendes probiert (in Form2):

    // 
    	// Form2
    	// 
    	// ..... hier steht der ander kram viom form designer
    	this.Closed +=new EventHandler(Form2_Closed);
    

    .......

    private void Form2_Closed(object sender, EventArgs e)
    		{
    			Form2 Log = new Form2();
    		}
    

    Nun das geht leider auch nicht... frage: was muss ich machen damit das Fenster oder besser der text darin bestehen bleibt auch wenn man es mit dem x schliesst?



  • Im Form.Closing Event musst du das Schließen unterbinden und this.Hide() aufrufen um das Fenster zu verstecken. Aktivieren tust es dann ja mit Show wieder.



  • ähm und was genau muss ich tun, damit ich das schliessen unterbinden kann?
    oder besser gesagt wie heisst der befehl und wo muss der rein?
    geht das auch mit this.irgendwas(); ?
    😕 😕 😕
    Verzeiht meine n00b fragen aber ich kanns irgendwie noch nich ^^



  • Nach mehrstündigem aufenthalt in der msdn Library hab ich nun rausgefunden, dass der befehl, den man braucht

    e.Cancel = true;
    

    heisst und man ihn nach

    this.hide();
    

    schreiben muss.

    naja jetz gehts juchu ^^



  • xs2007 schrieb:

    Nach mehrstündigem aufenthalt in der msdn Library hab ich nun rausgefunden, dass der befehl, den man braucht

    e.Cancel = true;
    

    heisst und man ihn nach

    this.hide();
    

    schreiben muss.

    naja jetz gehts juchu ^^

    Das nenn ich einen guten Fragensteller 🙂 Bin gestern net mehr dazu gekommen die Einzelheiten zu posten, aber die Eigeninitiative sollten mehr Leute zeigen 😕


Anmelden zum Antworten