2
在窗体的负载,我需要做的X
量检验的,以确定是否要打开或关闭的形式。以下是一个简单的例子。继承的Windows窗体奇怪的行为
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事件?
我只是认为这是奇怪的,任何人都知道吗?
我没有看到'override'。你在哪里挂载负载事件? – 2013-02-13 15:03:24
@ P.Brian.Mackey没有一个'override'只是直接继承衍生的基地。 – LukeHennerley 2013-02-13 15:06:06
考虑从UI分离业务逻辑。表单不应该包含名为'IsUserValid'的方法 - 将其移动到引擎类并在其上调用它,然后根据结果决定是否创建(并显示)表单。 – 2013-02-13 15:11:31