Laden...

Neue Form öffnen

Erstellt von GhstEsl vor 19 Jahren Letzter Beitrag vor 19 Jahren 12.132 Views
GhstEsl Themenstarter:in
20 Beiträge seit 2004
vor 19 Jahren
Neue Form öffnen

Hi, ich hab folgendes Problem:
Wenn ich auf einen Button klicke, öffnet sich eine 2.Form, und wenn ich diese wieder schließe und noch einmal öffen möchte,l bekomme ich eine Fehlermeldung, wie kann ich das abstellen?
Ich öffne meine neue Form immer so: (vielleicht liegt es ja an der methode)


static Form2 NeueForm;
static void Main() 
{
	NeueForm = new Form2();
	Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
	NeueForm.Show();
}

kann mir da vielleicht einer helfen?

-
885 Beiträge seit 2004
vor 19 Jahren

das geht so:

Formname Objektname = new Formname();
Objektname.Show();
oder
Objektname.ShowDialog();

Umgesetzt heisst das dann:


Suchenform SF = new Suchenform();
...

vorrausgesetzt du hast das Formular bereits im Designmodus erstellt und bezeichnet. Wenn nicht musst du natürlich nur schreiben:


Form Objektname = new Form();

.........................................

Was ich aber nicht ganz nachvollziehen kann das hier schon 17 Leute reingeguckt haben und keiner ne Nachricht hinterlassen hat. Naja.

GhstEsl Themenstarter:in
20 Beiträge seit 2004
vor 19 Jahren

Also der Fehler kommt immernoch, kann es sein, dass es dran liegt das ich [STAThread] löschen muss, damit ich das programm starten kann? weil wenn ich [STAThread] stehtn lasse, dann kommt folgender fehler:

Attribute 'STAThread' is not valid on this declaration type. It is valid on 'method' declarations only.

H
704 Beiträge seit 2003
vor 19 Jahren

Original von GhstEsl
Also der Fehler kommt immernoch, kann es sein, dass es dran liegt das ich [STAThread] löschen muss, damit ich das programm starten kann? weil wenn ich [STAThread] stehtn lasse, dann kommt folgender fehler:

Attribute 'STAThread' is not valid on this declaration type. It is valid on 'method' declarations only.

Wo hast du das [STAThread] Attribut hingetan? Du musst es vor eine Funktion tun.

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
-
885 Beiträge seit 2004
vor 19 Jahren

nein nein. ich denke du hast irgendwo was versehentlich gelöscht was unbedingt benötigt wird. das hat nix mit nem aufrufen der form zu tun.

hier mein komplettes projekt was nen button hat und beim klick die form aufruft.

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

namespace test
{
	/// <summary>
	/// Zusammendfassende Beschreibung für Form1.
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
		public System.Windows.Forms.Button button1;
		/// <summary>
		/// Erforderliche Designervariable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			//
			// Erforderlich für die Windows Form-Designerunterstützung
			//
			InitializeComponent();

			//
			// TODO: Fügen Sie den Konstruktorcode nach dem Aufruf von InitializeComponent hinzu
			//
		}

		/// <summary>
		/// Die verwendeten Ressourcen bereinigen.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Erforderliche Methode für die Designerunterstützung. 
		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
		/// </summary>
		private void InitializeComponent()
		{
			this.button1 = new System.Windows.Forms.Button();
			this.SuspendLayout();
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(56, 144);
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(128, 24);
			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.Load += new System.EventHandler(this.Form1_Load);
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// Der Haupteinstiegspunkt für die Anwendung.
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void button1_Click(object sender, System.EventArgs e)
		{
			Form SF = new Form();
			SF.Show();
		}
	}
GhstEsl Themenstarter:in
20 Beiträge seit 2004
vor 19 Jahren

danke, jetzt gehts, ich hatte das "Form SF = new Form();" an die verkehrte stelle geschrieben