Laden...

form als parameter übergeben...

Erstellt von atmosfear vor 19 Jahren Letzter Beitrag vor 19 Jahren 3.804 Views
A
atmosfear Themenstarter:in
260 Beiträge seit 2004
vor 19 Jahren
form als parameter übergeben...

hallo und guten morgen!

warum kann ich ein formular nicht als parameter in folgender form übergeben?


public void myFunction(Form theForm)

bei obigem code bekomme ich einen fehler:
D:\Projekte\C#\Libs\Windows\clsForm.cs(123): 'Projekt1' deutet auf 'Namespace' hin, wo 'Klasse' erwartet wurde

wenn ich aber schreibe


public void myFunction(System.Windows.Forms.Form theForm)

dann funktioniert alles!?!
der namespace System.WIndows.Forms ist mittels using System.Windows.Forms;
eingebunden!?!?!?

DANKE
atmosfear

R
139 Beiträge seit 2004
vor 19 Jahren

öh 🤔

also kann es sein dass du einen ordner oder ein neues projectpfad names form angelegt hast?

schau doch mal was passiert wenn du bei using nur dahinter Form schreibst also:

using Form;

posted by the real prince of persia

W
14 Beiträge seit 2004
vor 19 Jahren

Hi 🙁
vergeiche einfach mal de 1. mit dem 2. code...
Form ist nicht Forms
Forms ist im namespace System.Windows definiert
Form ist nirgentwo definiert 😁

R
139 Beiträge seit 2004
vor 19 Jahren

Form ist eine Klasse.

der compiler erkennt aber ja Form als namespace und schmeißt eine exception.

hab das mal getestet... komisch

also bei mir funktioniert es mit nur Form **wenn **als using System.Windows.Forms; einfüge.

posted by the real prince of persia

A
atmosfear Themenstarter:in
260 Beiträge seit 2004
vor 19 Jahren

also gut,

z.b:
ist ja bekanntlich TextBox auch eine Klasse, und sobal ich den namespace
System.Windows.Forms einbinde, dann kann ich mittels


TextBox tbox = new TextBox();

ein neues objekt davon erzeugen...

warum sollte ich das gleiche nicht auch mit "Form" machen können, wenn die
klasse "Form" im namespace System.Windows.Forms deklariert ist!?

DANKE
atmosfear

R
139 Beiträge seit 2004
vor 19 Jahren

ganz triviales beispiel:

using System;
using System.Windows.Forms;

namespace Server
{
	/// <summary>
	/// Summary description for test.
	/// </summary>
	public class test
	{
		public test()
		{
			//
			// TODO: Add constructor logic here
			//
		}

		public void myFunction(Form theForm)
		{
			string test = string.Empty;
			Form neueForm = new Form();
		}


	}
}

was soll da nicht funktionieren? funktioniert doch... 🤔

posted by the real prince of persia

W
14 Beiträge seit 2004
vor 19 Jahren

8o sorry was ich da eben geschrieben habe ist natürlich völliger unsinn...
🤔 aber das hast du sicher gescheckt... 👍

A
atmosfear Themenstarter:in
260 Beiträge seit 2004
vor 19 Jahren

aaahhhhhhhhh 8o

mein namespace heisst XXX.WinLibs.Form
da bekommt der compiler anscheinend ein problem mit dem "Form"

wenn ich den namespace abändere, sagen wir mal z.b.: auf XXX.WinLibs.FormFunctions
dann ist plötzlich alles in ordnung 😁

DANKE
atmosfear

R
139 Beiträge seit 2004
vor 19 Jahren

das meinte ich...

posted by the real prince of persia

F
529 Beiträge seit 2003
vor 19 Jahren

Frage: Wozu brauchst du das? Bitte sage nicht, dass du Controls oder Werte oder sonstwas ändern willst....

So gehts auch:



class hauptprogramm
{
  private void main()
  {
     form f = new form();
     f.makeForm(this);
  }
}

class form: System.Windows.Forms
{
  private Form frmHauptprogramm = null;
  public void makeForm(object Formular)
  {
     this.frmHauptprogramm = (Form) Formular;
  }
}


Nur Beispielprogramm:
Allerdins hat das den Nachteil, dass die Form erst zum Objekt gemacht werden muss, um dann wieder zur Form zu werden....

--
mfg
Franknstein

Besuchen sie das VisualC++ - Forum

R
139 Beiträge seit 2004
vor 19 Jahren

ich habe das "wozu" fragen aufgegeben 😉

posted by the real prince of persia

X
2.051 Beiträge seit 2004
vor 19 Jahren

Original von r00t
ich habe das "wozu" fragen aufgegeben 😉

wozu fragst du auch?! 😁

R
139 Beiträge seit 2004
vor 19 Jahren

naja weil die leute vielleicht ein ziel erreichen wollen den man einfacher "erreichen" kann siehe das mit DNS.Resolve

aber ich gebe dir teilweise recht, wozu wozu-fragen stellen 😁

posted by the real prince of persia

A
atmosfear Themenstarter:in
260 Beiträge seit 2004
vor 19 Jahren

hallo und guten morgen allerseits!

Original von Franknstein
Frage: Wozu brauchst du das? Bitte sage nicht, dass du Controls oder Werte oder sonstwas ändern willst....

wenn ich aus einer funktion heraus, die in einer klassenbibliothek und in einer eigenen formlosen klasse definiert ist, alle controls der aktuellen form löschen,
oder auch ein neues control erstellen möchte, dann brauche ich doch wohl
zugriff auf das forms-objekt, oder etwa nicht!?!?!

habe es jetzt mit dem konstruktor der klasse gelöst, also


...
...
	public class MAFormDesigner
	{
		private Form theForm;
		
      // -----------------------------------------------------------------------
		public MAFormDesigner() {}
		
      // -----------------------------------------------------------------------
		public MAFormDesigner(Form theForm)
		{
		   this.theForm = theForm;
		}
...
...

und im eigentlichen formular dann


...
...
      private MAFormDesigner maForm;

      public frmDesigner()
      {
         InitializeComponent();
         
         maForm = new MAFormDesigner(this);
      }
...
...

ist das etwa nicht in ordnung oder umständlich!?!?

naja weil die leute vielleicht ein ziel erreichen wollen den man einfacher "erreichen"

DANKE
atmosfear

R
139 Beiträge seit 2004
vor 19 Jahren

ich werde zitiert 😁 ich komme mir schon wie ein philosoph vor 😉

Edit: Hast du das mit dem default konstruktur mit absicht drin gelassen? und wenn ja wieso?

posted by the real prince of persia