[英]Optimal structure between multiple forms and multiple classes (C# Windows Forms Application)
我是C#的新手。 搜索后,我沒有找到與此問題相關的問題。 我想將此問題視為體系結構視圖。 我會盡力使解釋清楚:P。
例如,我有兩個FORM(主FORM,相機設置FORM)和一個類(Camera類)。 當應用程序啟動時,主窗體將首先顯示。
主表單需要與相機通信。 設置表格是通過單擊主表格上的按鈕生成的。 設置FORM還需要與相機通信。
我的問題是,為了將FORM設置為與相機通信,是否需要先將返回值傳遞給主FORM? 然后主FORM將與相機通信?
如果是這樣,當存在多種形式和幾種類別時,它將非常復雜。 如果沒有,請問我應該怎么做? 比如委托還是線程還是什么?
表單僅是在用戶和包含業務邏輯的類之間引導輸入和輸出的外殼。
例如,“拍照”是駐留在Camera類中的業務邏輯:
class Camera
{
public Picture TakePicture()
{
return _cameraAPI.TakePicture();
}
}
在“拍照”按鈕上單擊主窗體后,您調用camera.TakePicture()
。
我的問題是,為了設置與相機通信的表單,是否需要先將返回值傳遞給主表單? 然后主表單會與相機通信嗎?
您可以將Camera類的實例傳遞給每個表單,以便它們可以獨立運行。 您可以通過構造函數注入來做到這一點,在該表單中,您可以使用接受Camera
實例的新構造函數來調整每種表單,然后保留對其的本地引用:
class MainForm
{
private Camera _camera;
public MainForm(Camera camera)
: this()
{
_camera = camera;
}
}
然后在您的main方法中,顯示主要形式:
var camera = new Camera();
var mainForm = new MainForm(camera);
Application.Run(mainForm);
現在,當您想從主表單中顯示設置表單時,請重復:
public void Settings_Click()
{
// Pass camera reference
var settingsForm = new SettingsForm(_camera);
settingsForm.ShowDialog();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.