繁体   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