簡體   English   中英

對象和參考

[英]Objects and references

我現在在對象和引用中有點迷失了。 我正在構建一個包含一些不同類和winForms的小項目。

這是我的項目的簡短描述:我有一個MainForm,當我點擊“添加新電影”按鈕時,MovieForm會打開,我輸入有關電影的信息。 當我單擊“保存”按鈕時,我在MovieForm中創建信息的NewMovie對象。

下一步是將此NewMovie對象保存到文件中。 在這里我有點迷失在如何從另一個類別的其他地方從這個NewMovie對象中獲取數據,比如MovieManager,然后我從那里使用FileManager的對象來保存數據?

在MainForm中,我有這段代碼來檢測在MovieForm中點擊“添加新電影”按鈕的時間:

MovieForm movieForm = new MovieForm();
if (movieForm.ShowDialog() == DialogResult.OK)
{
Do something here?
}

我可以在這里到達或傳遞新的MovieForm對象嗎? 那我該怎么辦? 在我的項目中我也有一個MovieManager。 一種方法是將對象傳遞給該類? 我應該在MovieForm中創建MovieManager的對象,並在創建NewMovie對象后以這種方式傳遞數據嗎?

提供一些幫助和想法! 謝謝!

ShowDialog完成后,對movieForm的引用仍然有效。 因此,您可以在MovieForm中創建公共屬性:

class MovieForm {
    ...
    public NewMovie Result { get; private set; }
    ...
}

您在MoveForm中設置此值(當窗體關閉或按下某個“保存”按鈕時),然后您可以在主窗體中讀取它並將其傳遞給MovieManager:

MovieForm movieForm = new MovieForm();      
if (movieForm.ShowDialog() == DialogResult.OK)      
{      
    NewMovie newMovie = movieForm.Result;
    myMovieManager.CreateNewMovie(newMovie);
}      

在MovieForm類中創建一個屬性,並在創建實例時傳遞其值。

您應該從MovieForm返回新創建的Movie實例並將其存儲在管理器中。

public class MovieManager
{
  List<Movie> movies;

  public void AddMovie(Movie movie)
  {
    movies.Add(movie);
  }

  public Save()
  {
  }
}

public class Movie
{
  public string Name;
}

public class MainForm
{
  MovieManager manager;

  private void NewMovieClick(...)
  {
     using(var form = new MovieForm())
     {
       if(form.ShowDialog(this) == DialogResult.OK)
       {
         manager.Add(from.Movie);
       }
     }
  }
}

public class MovieForm
{
  public Movie Movie;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM