如何将Windows窗体重新加载或刷新为原始状态?

Mic*_*ero 5 c# winforms

如何将Windows窗体重新加载或刷新为原始状态?我使用过this.Refresh();, this.Invalidate();, form.Refresh(),form.Invalidate()

private void AdduserBtn_Click_1(object sender, EventArgs e)
{
    UserManagement obj = new UserManagement ();
    obj.CourseCategoryId = (int) CourseRegCbox.SelectedValue;
    obj.IDNumber = IDNumberTbox.Text;
    obj.Password = PasswordRegTbox.Text;
    obj.FName = FnameRegTbox.Text;
    obj.LName = LnameRegTbox.Text;
    obj.Gender = GenderTbox.Text;
    obj.Email = EmailRegTbox.Text;
    obj.PhoneNumber = PhonenumberRegTbox.Text;
    obj.Address = AddressRegTbox.Text;

    if ( UserManagement != null && UserManagement.Id > 0 )
    {
        obj.Id = UserManagement.Id;
        if ( UserManagement.UserInfo_Update (obj) > 0 )
        {
            MessageBox.Show ("Record Succesfully Updated!");
            UserInfoForm form = new UserInfoForm ();
            form.Refresh ();
        }
        else
        {
            MessageBox.Show ("An error occured!");
        }
    }
    else
    {
        if ( UserManagement.UserInfo_Insert (obj) > 0 )
        {
            MessageBox.Show ("Record Succesfully Added!");
            UserInfoForm form = new UserInfoForm ();
            form.Refresh ();

        }
        else
        {
            MessageBox.Show ("An error occured!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是想在数据正确保存或更新后将表单重新加载到原始状态.

Ste*_*rne 3

“this.Refresh();,this.Invalidate();,form.Refresh(),form.Invalidate()”

这些函数只是告诉窗口管理器重绘窗体图形;它们与表单数据的状态无关。

似乎您需要做的就是将控制值设置回原始值所以,在表单上创建一个函数:

 private void ResetForm()
    {
       //write code here to setup your dropdowns, put empty strings into textboxes, etc.
       //pretty much the reverse of the process by which you copy the values into your user object.
    }
Run Code Online (Sandbox Code Playgroud)

然后在代码的成功部分调用该函数:

if ( UserManagement.UserInfo_Update (obj) > 0 )
            {
                MessageBox.Show ("Record Succesfully Updated!");
                //reset this form, no need to make another one...
                ResetForm();
            }
Run Code Online (Sandbox Code Playgroud)

您还可以在您的等ResetForm()中包含对某处的调用。Form_Load

然而

我建议您一旦习惯了这样做,就停止这样做并使用Winforms 中内置的数据绑定工具;它允许您做的是使用设计器将表单上的用户界面元素(文本框等)绑定到各种类属性(例如UserManagement类)。

这样,您可以通过创建一个新的实例来简单地“重置”表单,UserManagement而不必处理清除文本框等的所有繁琐细节。否则,您会发现随着对象变得更加复杂,编写代码来手动重置表单UI 元素变得越来越乏味且容易出错。

希望有帮助。