Autor Beitrag
Peter1000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Do 17.09.15 13:09 
Hallo,

ich habe ein Dialogfenster offen und möchte in einem darunter liegenden Fenster in eine TextBox schreiben.

leider geht
ausblenden C#-Quelltext
1:
TextBoxA.Text = "blabla"					

nicht.

THX

Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Do 17.09.2015 um 13:26
Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Topic aus WinForms verschoben am Fr 18.09.2015 um 18:15
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 17.09.15 13:41 
Du brauchst, genauso wie du einen Verweis(Variable) auf die TextBox brauchst, einen auf die Form deren TextBox du beschreiben willst.
Dann geht meineLiebeAndereForm.TextBoxA.Text = "blabla". Sobald du einen Verweis auf die Form zu der Stelle gebracht hast wo du das so aufrufen möchtest und das funktioniert solltest du es gleich wieder ändern. Die TextBox ist inneres Wissen der Form nur die Form sollte da direkt drauf zugreifen. Du solltest also der Form eine Methode geben die man von außen Aufruft damit die Form selbst ihre TextBox manipuliert.

Wenn die darunterliegende Form auch die ist die das Dialogfenster darüber anzeigt kannst du ja z.B. in dem Prozess gleich einen Verweis auf sich selbst an die andere Form mitgeben.
Hier ein allgemeine, hier häufig gesehene, FAQ zum Thema.
Peter1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Fr 18.09.15 16:57 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
// Von dem Dialogfenster kann man den "TextBoxEintragenButten" Clicken und dann soll im darunterliegen Fenster das Wort "Schlossallee" in 
// der TextBox erscheinen.
   
private void TextBoxEintragenButton_Click(object sender, RoutedEventArgs e)
{
  ProbandManagementWindow1 meinFenster = new ProbandManagementWindow1(); 
  meinFenster.inTextBoxEintragen();
}

//diese Methode befindet sich im Fenster in dem die TextBox gefüllt werden soll
       
public void inTextBoxEintragen()
{
  streetTextBox.Text = "Schlossallee";
}

Die Methode wird zwar aufgerufen, allerdings erscheint das Wort "Schlossallee" NICHT in der TextBox.

Was mache ich da falsch?

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 18.09.15 18:07 
Du nimmst eine neue ProbandManagementWindow1 Window Klasse. Du musst schon die ProbandManagementWindow1 Window Instanz benutzen die du auch anzeigst.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 18.09.15 18:11 
Hallo,

lies mal meinen Artikel Kommunikation von 2 Forms durch.
Du hast einen typischen Anfängerfehler begangen und eine neue (aber unsichtbare) Form erzeugt, anstatt die bestehende Form zu benutzen.
Da aber eine untergeordnete Form niemals seinen Parent kennen sollte, wird im Artikel auch die Lösung dafür verraten: erstelle ein Ereignis dafür.

PS: sehe gerade, daß du ja WPF verwendest, also verschoben...
Peter1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Di 22.09.15 10:35 
Danke erst mal, bekomme das aber irgendwie nicht hin !

im Fenster: ProbandManagementWindow1 habe ich:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public string value;
public string StreetText
{
    get { return streetTextBox.Text; }
    set { streetTextBox.Text = value; }
}

im Dialog-Fenster: ProbandSuchenWindow1 habe ich den Button:
ausblenden C#-Quelltext
1:
2:
3:
4:
private void TextBoxEintragenButton_Click(object sender, RoutedEventArgs e)
{
    ProbandManagementWindow1.StreetText = "ein Text";
}

hier soll dann "ein Text" in die TextBox: streetTextBox eingetragen werden.

klicke ich jetzt im Fenster: ProbandSuchenWindow1 den Button klicke,
bekomme ich eine Fehlermeldung:
"Der Objektverweis wurde nicht aus eine Objektinstanz festgelegt."

-----------

Aber was ist da falsch??

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 22.09.15 10:50 
Wie hast du den jetzt das ProbandManagementWindow1 Fenster das angezeigt wird als Variable in dein Dialog-Fenster transportiert?
In deinem Code kann man jetzt nur sehen das du dort eine ProbandManagementWindow1 Variable hast aber nicht wie du die mit einen Verweis auf das tatsächlich angezeigte ProbandManagementWindow1 füllst.
Peter1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Di 22.09.15 11:04 
Verstehe ich was du jetzt meinst.

im Dialog-Fenster per TextBoxEintragenButton_Click mit
ausblenden C#-Quelltext
1:
ProbandManagementWindow1.StreetText = "ein Text";					

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 22.09.15 11:12 
Ja und meine Frage war wie du was sinnvolles in deine ProbandManagementWindow1 Variable bekommen hast. Ein Variable ist nur ein Verweis auf etwas die ist erstmal leer wenn man nix tut (und man bekommt einen Exception wie du wenn man einfach auf eine leere Variable zugreift). Deine Aufgabe ist ProbandManagementWindow1 mit einen Verweis auf die angezeigte Instanz des Fensters zu füllen damit du daran dann etwas aufrufen kannst, wie z.B. die StreetText Property. Das ist übrigens beschrieben in den Links die wir dir gegeben haben. In dem von TH69 sogar mit einer Erklärung was man da üblicherweise falsch macht bzw. missverstehen kann wenn man das zum ersten mal macht.
Peter1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Di 22.09.15 15:58 
Hab grad einfach mal den Modifier der TextBox auf "public" gesetzt. Ist unschön ich weiß, aber nicht mal dann hab ich zugriff drauf..
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 22.09.15 16:47 
Du scheinst überhaupt nicht zu verstehen, was Ralf Jansen dir geschrieben hat, oder?
Wenn du auf eine Eigenschaft eines Objekts (in deinem Fall ProbandManagementWindow1) zugreifen möchtest, dann mußt du sicherstellen, daß diese nicht null ist, du also irgendwo diese Variable korrekt initialisierst hast, z.B. im Konstruktor:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
class MyClass
{
    private MyOtherClass myOtherClass;

    public MyClass(MyOtherClass otherClass)
    {
        myOtherClass = otherClass; // Initialisierung
    }

    public void Test()
    {
        myOtherClass.Text = "hipp hipp hurra";
    }
}

Jetzt mußt du natürlich dafür sorgen, daß von der anderen Klasse aus dieser Konstruktor mit dem richtigen Parameter aufgerufen wird:
ausblenden C#-Quelltext
1:
2:
// in MyOtherClass
MyClass myClass = new MyClass(this); // this stellt eine Referenz auf die eigene Instanz der Klasse dar