1
我在Form1中有一個TreeView。我有一個名爲「User」的類,我的意圖是修改TreeView。是否有可能使TreeView成爲全局的,並可以從我的User類訪問?可能使TreeView全局?
我在Form1中有一個TreeView。我有一個名爲「User」的類,我的意圖是修改TreeView。是否有可能使TreeView成爲全局的,並可以從我的User類訪問?可能使TreeView全局?
一般而言,您的用戶界面應該是您所有「業務邏輯」其餘部分的頂層。
例如,您可能有一些UserManager
類,該類顯示集合IEnumerable<User>
,從中可以填充樹。 UI上的事件導致調用業務邏輯。
當業務邏輯中的事情需要更新UI時,他們應該公開爲events。事件本質上是.NET中的智能「回調函數」。 UI具有註冊這些事件的事件處理程序,並在業務層指示更改時相應地自行更新。
class User { }
class UserManager {
public IEnumerable<User> Users { get { ... } }
public event UserLoggedInEventHandler UserLoggedIn;
}
class UI {
private UserManager m_usrMgr;
public UI() {
m_usrMgr = UserManager.GetSingletonInstance();
m_usrMgr.UserLoggedIn += UserLoggedInHandler;
}
private void AddUserButtonClicked(...) {
m_userMgr.AddUser(username, ...);
}
private void UserLoggedInHandler(...) {
MessageBox.Show("User x logged in");
}
}
使用事件有助於保持類的分離。通過精心設計的系統,您可以將整個系統移至不同的用戶界面,而無需觸及業務邏輯;只有調用它的代碼,並監聽來自它的事件。
這是一個非常糟糕的設計。您的課程不應與用戶界面耦合。 – SLaks 2013-05-05 19:53:15
隨着我的繼續,這變得越來越明顯。我一直在試圖將它們拼湊在一起。我將不得不重新評估我的方法。謝謝。 – GoodBoyNYC 2013-05-05 20:00:31
使用User類的委託給Form1表單。 – Max 2013-05-06 14:24:03