【问题标题】:C#/WinForms: Do I need the IWin32Windows?C#/WinForms:我需要 IWin32Windows 吗?
【发布时间】:2010-12-02 14:59:09
【问题描述】:

在编写 WinForms 应用程序并适当分离视图和控制器/演示者功能时,我经常发现自己在编写这样的代码:

public void class SomeView:Form{
  private void loadFileButton_Click(object sender, EventArgs e)
  {
    _loadFileAction.Execute(this);
  }
}

public void class LoadFileAction:Action{
  public override void Execute(IWin32Window owner){
    // ...
    string file = _fileSelector.SelectFile(owner);
  }
}

public void class FileSelector:IFileSelector{
  public override void SelectFile(IWin32Window owner){
    OpenFileDialog dialog = new OpenFileDialog();
    dialog.ShowDialog(owner);
    //...
  }
}

或其他一些绕过正确窗口以打开子对话框的变体。

我经常想跳过窗口句柄并始终使用无参数的 ShowDialog() 方法 - 它应该只使用当前活动窗口。

有人有使用类似架构的经验吗?你是做什么的?

【问题讨论】:

    标签: c# .net winforms model-view-controller architecture


    【解决方案1】:

    您可以抽象对话框并将它们放在外观后面。然后,该外观可以查找当前活动表单并使用它,或者自动不使用任何内容。那么你就不需要传递它了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 2016-02-11
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多