在加载表单时,我需要进行X
大量检查以确定是否打开或关闭表单。下面是一个简单的例子。
public partial class BaseForm : Form
{
private void BaseForm_Load(object sender, EventArgs e)
{
if(!IsUserValid())
MessageBox.Show("User is not valid");
}
private bool IsUserValid()
{
List<string> allowedUsernames = new List<string>();
using (SqlConnection con = new SqlConnection(_connectionString))
{
//Get a list of usernames, none of which are "Developer" usernames
}
return allowedUsernames.Any(username => username == Environment.UserName);
}
}
public partial class DerivedForm : BaseForm
{
}
上面的示例,无论我的用户名如何,我都可以在设计器中完美加载表单。如果我做另一个表单,DerivedForm
并继承基,那么它会调用Load
,因此将显示一个MessageBox
,然后Close
在设计模式下显示一个表单,它不允许我访问设计器,为什么派生WindowsForm
需要使用Load
事件但基不需要? 如果您正在使用继承进行继承,WindowsForms
那么不使用 Load 事件是否明智?
我只是觉得这很奇怪,有人知道吗?