5

如何重新加载或刷新 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!");
        }
    }
}

一旦数据正确保存或更新,我只想将表单重新加载到原始状态。

4

4 回答 4

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.
    }

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

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

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

然而

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

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

希望有帮助。

于 2013-11-05T14:03:38.973 回答
1

这很简单。您必须创建一个新的表单对象并关闭当前表单。

 Form fr = new Form();
     fr.Show();
     this.Close();
于 2015-12-26T22:28:22.283 回答
1

我通过关闭和打开表单来完成此操作。所以用你的表单名称替换 *****

        ***your form name** ss = new **your form name***();
        ss.Show();
        this.Hide();

我还建议将表单关闭以完全关闭表单:

 private void ***Your form name***Closed(object sender, FormClosedEventArgs e)
    {
        Application.Exit();
    }
于 2016-02-23T15:34:53.493 回答
0

尝试这个 :

this.Controls.Clear();
this.InitializeComponent();
于 2021-03-14T11:47:15.930 回答