Сохраните значения перед проверкой UserControl - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть класс UserControl:

public partial class MyObjectView : System.Windows.Forms.UserControl

Этот интерфейс имеет различные компоненты для ввода данных пользователем.Чтобы показать проблему, которая у меня возникла, нужно показать только одну, поэтому в MyObjectView.Designer.cs:

internal System.Windows.Forms.TextBox txtMyNumber;

В конструкторе MyObjectView у меня есть:

this.Validating += new System.ComponentModel.CancelEventHandler(this_Validating);

а затем:

private void this_Validating(object sender, System.ComponentModel.CancelEventArgs cancelEventArgs)
{

// MyObject here already contains the data entered in the control by the user
}

Таким образом, пользователь вводит данные и нажимает кнопку закрытия X в верхнем правом углу.Я хочу увидеть разницу между тем, что изначально содержалось в MyObject (когда впервые отображался элемент управления UserControl), и тем, что пользователь вводил в форму.Однако в this_Validating MyObject уже обновлен до введенного пользователем, поэтому у меня больше нет «до»
Как мне это сделать?

1 Ответ

0 голосов
/ 14 февраля 2019

Почему бы вам не клонировать исходный объект в конструкторе, чтобы у вас была копия его начального состояния:

    class MyClass
    {
        public string Name { get; set; }

        public MyClass ShallowCopy()
        {
            return (MyClass)this.MemberwiseClone();
        }

    }


    //Copy of original state of object
    private MyClass _orig;

    public Form1()
    {
        InitializeComponent();

        //In your case this comes in via the constructor?
        MyClass o = new MyClass();
        o.Name = "hi";

        _orig = o.ShallowCopy();
 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...