如何将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)
我只是想在数据正确保存或更新后将表单重新加载到原始状态.
“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 元素变得越来越乏味且容易出错。
希望有帮助。