对象和参考

时间:2012-06-01 07:17:10

标签: c#

我现在在对象和引用中有点迷失。我正在构建一个包含一些不同类和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对象后以这种方式传递数据吗?

提供一些帮助和想法!谢谢!

3 个答案:

答案 0 :(得分:2)

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);
}      

答案 1 :(得分:0)

在MovieForm类中创建一个属性,并在创建实例时传递其值。

答案 2 :(得分:0)

您应该从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;
}