我有一个属于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已经被更新为用户输入的内容,因此我不再具有'before'
我该怎么做?
答案 0 :(得分:1)
为什么不在构造函数中克隆原始对象,以便获得其初始状态的副本:
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();
...