Hallo,
ich möchte einen String von der MainForm zur Subform senden.
Umgekehrt habe ich das bereits hinbekommen.
Die SubForm ist als UserControll in der MainForm eingebunden.
Sonmit ist kein Objektverweiß erforderlich.
Der Code sieht so aus:
MainForm:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml.Serialization;
namespace kommunikation2formen { using Controls; public partial class Form1 : Form { public Form1() { InitializeComponent(); personUserControll1.UpdateText += UpdateLabelText; }
void UpdateLabelText(object sender, PersonUserControll.TextEventArgs e) { MessageBox.Show(e.Text); }
private void Form1_Load(object sender, EventArgs e) {
} } } |
SubForm:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace kommunikation2formen.Controls { public partial class PersonUserControll : UserControl { public PersonUserControll() { InitializeComponent(); }
public class TextEventArgs : EventArgs { public TextEventArgs(string text) { Text = text; }
public string Text { get; set; } }
public event EventHandler<TextEventArgs> UpdateText;
protected void OnUpdateText(string text) { OnUpdateText(new TextEventArgs(text)); }
protected virtual void OnUpdateText(TextEventArgs e) { EventHandler<TextEventArgs> ev = UpdateText; if (ev != null) ev(this, e); }
private void PersonUserControll_Load(object sender, EventArgs e) {
}
private void button1_Click(object sender, EventArgs e) { OnUpdateText("dsfdsfdfds"); } } } |
Wenn in der Subform auf dem Button geklickt wird, erscheint von der MainForm eine MessageBox.
Ich möchte dies gerne umgekehrt haben. Also sprich in der MainForm wird auf einen Button geklickt und die SubForm arbeitet mit den Daten.(bsp.: MessageBox)
Wenn ich den "Sende" und "Empfangscode" vertausche ist ein Objektverweiß erforderlich, weil die MainForm ja nicht als UserControll in der SubForm eingebunden ist.
Wie kann ich am besten einen String von der MainForm zu der SubForm bekommen?