我在 Form1 中有一个 TreeView。我有一个名为“User”的类,我的目的是修改 TreeView。是否可以使 TreeView 成为全局并可从我的 User 类访问?
问问题
70 次
1 回答
2
一般来说,您的 UI 应该是所有其他“业务逻辑”之上的一层。
例如,您可能有一些UserManager
公开了一个集合的类,您可以IEnumerable<User>
从中填充树。UI 上的事件会导致对业务逻辑的调用。
当业务逻辑中的事物需要更新 UI 时,应该将它们公开为事件。事件本质上是 .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");
}
}
使用事件有助于保持你的类解耦。使用精心设计的系统,您可以将整个系统移至不同的 UI,而不必触及业务逻辑;只有调用它的代码,并监听它的事件。
于 2013-05-05T20:08:36.660 回答