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