2009-09-30 125 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

您可以抽象出對話框並將它們放在門面後面。然後,該外觀可以查找當前活動表單並使用該表單,或者自動使用任何內容。那麼你不需要傳遞它。