Я бы выставил событие в FormB, которое вы вызываете, когда вам нужно обновить FormA.Перед вызовом FormA formBInstance.Show()
вы можете подключить делегат к обработчику событий для обработки того, что вам нужно сделать в FormA: formBInstance.UpdateEvent += myDelegateEventHandler
.Поэтому, когда FormB необходимо обновить FormA, вы просто запускаете это событие, и делегат будет работать, как и ожидалось, под FormA.
Изменить, чтобы показать еще немного кода!
FormB.cs:
// You can add more parameters to this to pass any data you need
// in addition to the object sender you pass back
public delegate void UpdateEventHandler(object sender, EventArgs e)
public class FormB : Form
{
public event UpdateEventHandler Update;
private void update()
{
// do your updates to formB here
InvokeUpdateEvent(objectThatContainsUsefulData);
}
protected void InvokeUpdateEvent(object sender)
{
var handler = UpdateEvent;
if (handler != null)
handler(sender, null);
}
}
FormA.cs:
public class FormA : Form
{
private void myUpdateDelegate(object sender, EventArgs e)
{
// Do your updates that formA will require here
}
public void methodCallingFormB()
{
// Do whatever you need to set up for creating form B
var formB = new FormB();
formB.UpdateEvent += myUpdateDelegate;
formB.Show();
}
}
Я надеюсь, что все это имеет смысл для вас.Обратитесь к MSDN Events Tutorial для получения дополнительной помощи!