Я бы с событием. Пусть ваша форма уведомлять вторую форму, которая число было рассчитано:
public partial class Form1 : Form
{
public event EventHandler<NumberCalculatedEventArgts> NumberCalculated;
private void ButtonClick(object sender, EventArgs e)
{
int value = 42; // calculate value
OnNumberCalculated(value); // Notify subscribers
}
protected void OnNumerCalculated(int value)
{
if (NumberCalculated != null) // Check if somebody needs notification
NumberCalculated(this, new NumberCalculatedEventArgs(value));
}
}
Вторая форма должна подписаться на события этой формы:
public partial class Form2 : Form
{
private void ShowCalclulatorButton_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.NumberCalculated += Form1_NumerCalculated; // Subscribe
form1.Show();
}
void Form1_NumerCalculated(object sender, NumberCalculatedEventArgs e)
{
label1.Text = e.Value.ToString(); // Handle notification
}
}
И последнее, что вам нужно будет пользовательских арг событий, чтобы обеспечить расчетное значение:
public class NumberCalculatedEventArgts : EventArgs
{
public NumberCalculatedEventArgts(int value)
{
Value = value;
}
public int Value { get; private set; }
}
Вы также можете использовать Action
вместо пользовательского дескриптора события г, чтобы сделать решение более компактным:
public partial class Form1 : Form
{
public event Action<int> NumberCalculated;
private void ButtonClick(object sender, EventArgs e)
{
int value = 42; // calculate value
if (NumberCalculated != null)
NumberCalculaed(value);
}
}
было бы неплохо, если бы вы добавить фрагмент кода –
Вы должны иметь ссылку на '' Form1' к Form2'. Я предполагаю, что вы создаете вторую форму с первой. Тогда у вас есть ссылка, которую вы можете использовать. Сохраните его в глобальной переменной, чтобы вы могли получить к нему доступ из нескольких методов. –
Можете ли вы прокомментировать синтаксис, как это сделать? –