Hallo Zusammen,
ich hänge an einem Problem fest.
Ich möchte parallel zur MainForm noch einen Logger mitfüheren und der Logger soll jedesmal aktualisiert werden, wenn ich was ergänze:
namespace TIAPortalController
{
//Main Form
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void WriteTxtStatus(string Text, Color color)
{
...
var child = new Logger(this);
child.CustomValue = passingText;
child.Logger_Akt();
}
private void bu_openLog_Click(object sender, EventArgs e)
{
var child = new Logger(this);
child.CustomValue = passingText;
child.Show();
child.Logger_Akt();
}
}
//Logger
public partial class Logger : Form
{
public string CustomValue { get; set; }
private Form1 parentForm;
public Logger()
{
InitializeComponent();
}
public Logger(Form1 parent)
{
InitializeComponent();
this.parentForm = parent;
}
private void Logger_Load(object sender, EventArgs e)
{
txt_Logger.Text = CustomValue;
}
public void Logger_Akt()
{
txt_Logger.Text = CustomValue;
}
}
}
Kann mir jemand sagen, wo ich hierbei den Fehler mache?
LG
Hallo wbach,
was funktioniert denn nicht? Was ist das Problem? Hilf uns ein bisschen dir zu helfen.
[FAQ] Kommunikation von 2 Forms
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hallo,
der Logger wird nicht aktualisiert, wenn ich den String passingText beschreibe aus der Methode:
private void WriteTxtStatus(string Text, Color color)
{
txt_Status.SelectionStart = txt_Status.TextLength;
txt_Status.SelectionLength = 0;
txt_Status.SelectionColor = color;
txt_Status.AppendText(Text + Environment.NewLine);
txt_Status.Select(txt_Status.Text.Length, 1);
txt_Status.ScrollToCaret();
passingText = txt_Status.Text;
var child = new Logger(this);
child.CustomValue = passingText;
child.Logger_Akt();
}
Wobei die Methode:
private void bu_openLog_Click(object sender, EventArgs e)
{
passingText = txt_Status.Text;
var child = new Logger(this);
child.CustomValue = passingText;
child.Show();
child.Logger_Akt();
}
funktioniert.
Gewünschter Effekt. Logger soll parallel den Status im txt_Status anzeigen.
Ich hoffe diese Informationen reichen aus. Sry, bin freizeit Programmierer 😃
LG
Vielleicht hilft dir ja folgendes weiter:
Code von Form1:
public partial class Form1 : Form
{
// Instanz vom Logger in Form1
Form2 logger;
public Form1()
{
InitializeComponent();
}
//Initalisiert die Instanz zu Form 2 und zeigt diese an
private void button1_Click(object sender, EventArgs e)
{
logger = new Form2();
logger.Show();
}
//Setzt den Text "Meldungstext" auf Form2
private void button2_Click(object sender, EventArgs e)
{
string message = "Meldungstext";
logger.SetText(message);
}
}
Code von Form2:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
internal void SetText(string message)
{
textBox1.Text = message;
}
}
Eigentlich kommt es nur darauf an das Form1 die Instanz von Form2 festhält und Form2 eine Methode bereitstellt um den Text zu setzten.
Dein Fehler ist das du immer eine neue Instanz vom Logger öffnest. new Logger solltest du also nur einmal aufrufen.
Den bereits geloggten Text kannst du ja zusätzlich in einer variablen speichern, Sodass mit Show die alten Einträge angezeigt werden.