2009-09-30 122 views
0

当写有视图 - 控制器和/演示的功能之间的适当分离,WinForms应用程序,我经常发现自己写这样的代码:C#/ WinForms:我需要IWin32Windows吗?

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()方法 - 它应该只使用当前活动窗口。

任何人都有使用类似体系结构的经验吗?你是做什么?

回答

0

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