Laden...

Werte übergeben

Erstellt von Daniel_g vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.986 Views
D
Daniel_g Themenstarter:in
67 Beiträge seit 2006
vor 17 Jahren
Werte übergeben

Hallo!

Habe folgendes Problem ich habe ein Formular namens Login.cs
und will einen Wert unzwar den Benutzernamen an das Formular Benutzer.cs übergeben, wie realisiere ich so etwas?

57 Beiträge seit 2005
vor 17 Jahren

Beschreib bitte genauer was möchtest du haben.
sollte die Übertragung per Button-click erfolgen; Ist die Anwendung Multithreded...

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Daniel_g,

klarer Fall für die FAQ: Kommunikation von 2 Forms

Bitte vermeide voreilige Nachfragen. In der FAQ steht wirklich alles, was du brauchst.

herbivore

57 Beiträge seit 2005
vor 17 Jahren

Hab gerade etwas gebastelt:


using System;
using System.Windows.Forms;
using System.Drawing;

public class MyForm : Form
{
	private MyForm2 form;	
	private Button btAction = new Button();
	private String [] text = {"1111111111111",
					 "2222222222222",
					 "3333333333333",
					 "4444444444444",
					"5555555555555"};
	private int index = 0;
	
	public  MyForm(MyForm2 tmp)
	{
		this.form = tmp;
		this.Text = "My simple Form in UltraEdit";	
		this.btAction.Location = new Point(0, 0);
		this.btAction.Text = "Action";
		this.btAction.Click += new EventHandler(this.Action);
				
		this.Controls.Add(this.btAction);
	}
	
	private void Action(object source, EventArgs e)
	{
		
		if(this.index > 4) this.index = 0;
		form.setUserName(this.text[index]);
		index ++;
	}
}


public class MyForm2 : Form
{
	private TextBox txtText = new TextBox();
	public  MyForm2()
	{
		this.Text = "My simple Form in UltraEdit";	
		this.txtText.Location = new Point(0, 0);
		this.txtText.Size = new Size(200, 25);
		this.Controls.Add(this.txtText);
	}
	
	public void setUserName(string str)
	{
		this.txtText.Text = str; 	
	}
}

class MainApp
{
	public static void Main()
	{
		MyForm2 f2 = new MyForm2();
		MyForm f = new MyForm(f2);
		f2.Show();
		Application.Run(f);
	}	
}



564 Beiträge seit 2006
vor 17 Jahren

Hallo Daniel_g!

Öffentliche Events, bei denen sich eine andere Form einklinken kann, können dazu benutzt werden. Die Events transpoertieren die benötigten Daten einfach mit, wenn sie gefeuert werden.

der Marcel

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

57 Beiträge seit 2005
vor 17 Jahren

Original von Daniel_g
Hallo Daniel_g!

Öffentliche Events, bei denen sich eine andere Form einklinken kann, können dazu benutzt werden. Die Events transpoertieren die benötigten Daten einfach mit, wenn sie gefeuert werden.

der Marcel

hi, der Marcel!

Wenn du mir sagen könntest was mache ich verkehrt...


using System;
using System.Windows.Forms;
using System.Drawing;

public class MyForm : Form
{
	private Button btAction = new Button();
	private String [] text = {"1111111111111",
									  "2222222222222",
									  "3333333333333",
									  "4444444444444",
									  "5555555555555"};
	public int index = 0;
	public delegate void OnSetText(string str);
	public event OnSetText doSetText;
	
		
	public  MyForm()
	{
		this.Text = "My simple Form in UltraEdit";	
		this.btAction.Location = new Point(0, 0);
		this.btAction.Text = "Action";
		this.btAction.Click += new EventHandler(this.Action);
		this.Controls.Add(this.btAction);
	}
	
	private void Action(object source, EventArgs e)
	{
		if(this.index > 4) this.index = 0;
		if (doSetText != null) 
			doSetText(this.text[index]);
		index ++;
	}
}

public class MyForm2 : Form
{
	private TextBox txtText = new TextBox();
	public  MyForm2()
	{
		this.Text = "My simple Form in UltraEdit";	
		this.txtText.Location = new Point(0, 0);
		this.txtText.Size = new Size(200, 25);
		this.Controls.Add(this.txtText);
	}
	
	public void setUserName(string str)
	{
		this.txtText.Text = str; 	
	}
}

class MainApp
{
	public static void Main()
	{
		MyForm2 f2 = new MyForm2();
		MyForm f = new MyForm();
		f.doSetText += new f.OnSetText(f2.setUserName); //<---Fehler!
		Application.Run(f);
	}	
}

Fehler:
2FormsMitEvents.cs(68,22): error CS0246: The type or namespace name 'f' could not be found (are you missing a using directive or an assembly reference?)

57 Beiträge seit 2005
vor 17 Jahren

Jetzt habe ich es. so ist es richtig.


class MainApp
{
	public static void Main()
	{
		MyForm2 f2 = new MyForm2();
		MyForm f = new MyForm();
		f.doSetText += new MyForm.OnSetText(f2.setUserName);
		f2.Show();
		Application.Run(f);
	}	
}

564 Beiträge seit 2006
vor 17 Jahren

Hallo gwert_a!

Das ist nett von dir, dass du dir die Mühe machst und soviel Code tippst. 👍 Letztenendes finde ich aber, dass es für den Fragestellenden schwer ist, sich in soviel Code hineinzufinden. Schließilich wurde der Code nicht von Ihm geschrieben und zudem wirken deine (für dich verständlichen Berzeichnungen) für ihn dann vielleicht völlig aus dem Zusammenhang gerissen und unverständlich. Daher würde ich dir als Tipp geben, wenn du jemandem hilfst, nur die prägnantesten Teile als Code-Schnipsel zu geben. 😉

der Marcel

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

57 Beiträge seit 2005
vor 17 Jahren

Original von der Marcel
Hallo gwert_a!

Das ist nett von dir, dass du dir die Mühe machst und soviel Code tippst. 👍 Letztenendes finde ich aber, dass es für den Fragestellenden schwer ist, sich in soviel Code hineinzufinden.

ich bin immer noch der Leier in Themen Programmierung und ich denke das aus dem Sicht des Leies ist es gar nicht schlecht das ganze Program zu Verfügung haben, da es ist manchmal schwer die Tips und Snipets zu impliementieren.
Ausserdem wusste ich bis heute morgen nicht wie die kommunikation zwischen 2 Formen zu gewährleisten. Hab also "so viel code" ehe für mich selbst geschrieben.
Auf jeden Fall danke für den Tip mit Events 🙂

qwert_a