Рассматривали ли вы использование обертки вокруг ваших свойств с уведомлением об изменениях?Затем вы можете использовать привязку данных, чтобы значение и текстовые поля обновлялись вместе.См. Следующее:
public partial class Form1 : Form
{
public NotifyProperty<string> A { get; } = new NotifyProperty<string>();
public NotifyProperty<double> B { get; } = new NotifyProperty<double>();
public void Reset()
{
A.Value = "Something";
B.Value = 3.14d;
}
public Form1()
{
InitializeComponent();
textBox1.DataBindings.Add("Text", A, "Value", true, DataSourceUpdateMode.OnPropertyChanged);
textBox2.DataBindings.Add("Text", B, "Value", true, DataSourceUpdateMode.OnPropertyChanged);
Reset();
}
private void simpleButton1_Click(object sender, EventArgs e)
{
Reset();
}
}
public class NotifyProperty<T> : INotifyPropertyChanged
{
private T _value;
public T Value
{
get => _value;
set
{
if (_value != null && _value.Equals(value)) return;
_value = value;
PropertyChanged?.Invoke(this,new PropertyChangedEventArgs("Value"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
Когда вызывается Reset (), значения в A и B, а также textBox1 и textBox2 будут обновлены.Кроме того, когда вы получаете результаты из формы, вы можете использовать A и B (вам не нужно использовать текстовые поля, потому что когда пользователь вводит текст, A и B будут обновляться автоматически).