Autor Beitrag
coolace
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141



BeitragVerfasst: So 29.08.10 18:12 
Hy,

ich habe alles möglich probiert aber ich komme hier zu keinem Ergebnis. Im Grunde ist es ja
ein Standardvorgeben Daten von Form2 auf die Hauptform zu übergeben aber hier bekomme ich es nicht hin

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Hauptform:
String suchen;

public void Suchroutine(String search)
{
    suchen = search;         
}


Form2:
private void rtfsuchen_KeyPress(object sender, KeyPressEventArgs e)
{            
  if (e.KeyChar.Equals((char)13))
 {             
   ((Form1)Owner).Suchroutine("Testtext");
 }
}

Fehler: NullReferenceException

Wie kann das sein, ich greife ja auf eine public Funktion in der Hauptform zu und muss
ja nichts mit "new" erzeugen. Was mache ich hier falsch ?

Gruß

Coolace
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: So 29.08.10 18:21 
Hi,

Du könntest Deiner Form2 im Konstruktor einen Verweis auf Deine Form1 mitgeben.
Und dann die Funktion aufrufen...

LG, Marko
coolace Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141



BeitragVerfasst: So 29.08.10 18:24 
Wie mach ich das ?
sorry, hab ich noch nie gemacht ?
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: So 29.08.10 18:30 
So:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
private Form1 mainForm;

public Form2(Form1 mainForm)
{
  InitializeComponent(); 
  this.mainForm = mainForm;  
}


Dann musst Du nur noch beim Aufruf der Form2 den Verweis auf Form mitgeben (this), und kannst dann über
ausblenden C#-Quelltext
1:
this.mainForm..Suchroutine("Testtext");					

Deine Funktion aufrufen. Wenn sie denn nicht private ist :)

LG, Marko
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: So 29.08.10 18:31 
Noch was vergessen:

Oder Du löst das ganze mit Events.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 29.08.10 18:49 
Etwas ins Blaue geraten, aber für mich sieht das eher so aus, als sollte diese "Suchroutine" gar nicht in Form1, sondern in einer separate Klasse sein, die dann von beiden Forms benutzt werden kann.

_________________
>λ=
coolace Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141



BeitragVerfasst: So 29.08.10 19:32 
Ne, das sind 2 verschiedene WinForms die im MS Visual Studio 2010 erzeugt worden sind.

In der Form1 rufe ich die Form2 und in der Form2 gibt es eine Textbox und die Eingabe soll
wieder in die Form1 übergeben und dort dann in der Funktion verwendet werden.

Das vorgehen in meinem Code Fragment habe ich bis .NET 3.5 dauernd verwendet aber seit
dem .Net 4.0, das ich seit ein paar Wochen verwendet klappt es nicht mehr. Warum auch immer
coolace Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141



BeitragVerfasst: Mo 06.09.10 21:07 
Danke für die zahlreichen Antworten, habe es mit Trashkid2000 seiner Antwort gelöst.
Vor .NET 4.0 ging das noch auf meine Weise, keine Ahnung was die geändert haben.

Gruß


Coolace