0

我现在有点迷失在对象和引用之间。我正在构建一个带有一些不同类和 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。一种方法是将对象传递给该类?在创建 NewMovie 对象后,是否应该在 MovieForm 中创建 MovieManager 对象并以这种方式传递数据?

Preciate一些帮助和想法!谢谢!

4

3 回答 3

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);
}      
于 2012-06-01T07:22:18.727 回答
0

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

于 2012-06-01T07:19:15.617 回答
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;
}
于 2012-06-01T07:48:16.753 回答