Autor Beitrag
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 30.04.15 16:35 
Hallo Leute. Ich habe auf der Form1 einen Button (der dafür sorgt, dass Form2 aufgerufen wird) und eine RichTextBox. Auf der Form1 habe ich:

ausblenden C#-Quelltext
1:
public static string htmltag;					


Bei der Form2 wird nun der String htmltag generiert. Nun soll die Form1 permanent überprüfen, ob der String nicht leer ist. In welches Event könnte ich diesen Code schreiben:

ausblenden C#-Quelltext
1:
2:
3:
4:
if(htmltag != "")
{
 this.richTextBox1.SelectionText = htmltag;
}


Ich hätte die Idee, einen Timer dafür zu verwenden. Mein Eigentliches Problem: ich suche ein Event, was permanent überprüft, welchen Status htmltag hat.

LG :) :D :)
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 30.04.15 16:55 
Und wieso wirft From2 nicht einfach einen Event wenn sich der string ändert und sagt Form1 damit bescheid?
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 30.04.15 17:01 
Hallo. Das ist eine gute Idee, jedoch weiß ich nicht welches Event und wie Form1 "bescheid" bekommt. MFG :)
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 30.04.15 17:19 
Auf deiner Form 2 definierst du ein neues Event. für den string. Z.B.
ausblenden C#-Quelltext
1:
public event EventHandler<EventArgs<string>> StringChanged;					

Damit nicht leere EventArgs benutzt werden sondern irgendwas in den EventArgs mit dem Event transportiert wird brauchen wir eine Ableitung der EventArgs Klasse die diese Daten enthält.
Hier hätten wir gern einen string transportiert. Der Wiederverwendbarkeit halber nehme ich einfach eine generische Ableitung.
ausblenden C#-Quelltext
1:
2:
3:
4:
public class EventArgs<T> : EventArgs
{
    public T EventData { get; set; }
}

Dieser Event muß zum richtigen Zeitpunkt gefeuert werden. Du möchtest das scheinbar beim ändern eines Textes in einer Richtextbox. Also registriere ich den TextChanged Event der RichTextBox und werfe in diesem Event den Event der Form.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
    if (StringChanged != null)
        StringChanged(thisnew EventArgs<string> { EventData = richTextBox1.Text });
}

Jetzt muß noch der Event auf der anderen Form registriert werden. Das geht zum BEispiel am besten dort wo du die andere Form auch erzeugst . Z.B.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
private Form2 form2;
private void ShowForm2()
{
    form2 = new Form2();
    form2.StringChanged += form2_StringChanged;
    form2.Show();
}

Und in dem EventHandler kannst du irgendwas machen mit dem string den du in den EventArgs übergeben bekommst. Z.B. in einer TextBox anzeigen.
ausblenden C#-Quelltext
1:
2:
3:
4:
private void form2_StringChanged(object sender, EventArgs<string> e)
{
    textBox1.Text = e.EventData;
}