1

我在 Form1 中有一个 TreeView。我有一个名为“User”的类,我的目的是修改 TreeView。是否可以使 TreeView 成为全局并可从我的 User 类访问?

4

1 回答 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 回答