简体   繁体   English

对象和参考

[英]Objects and references

I'm a little bit lost right now among objects and references. 我现在在对象和引用中有点迷失了。 I'm building a small project with some different classes and winForms. 我正在构建一个包含一些不同类和winForms的小项目。

This is a short description of my project: I have a MainForm and when i click 'add new movie' button, the MovieForm opens where I enter information about a movie. 这是我的项目的简短描述:我有一个MainForm,当我点击“添加新电影”按钮时,MovieForm会打开,我输入有关电影的信息。 When I click the 'save' button I create a NewMovie object of the information in MovieForm. 当我单击“保存”按钮时,我在MovieForm中创建信息的NewMovie对象。

Next step is to save this NewMovie object to a file. 下一步是将此NewMovie对象保存到文件中。 And it's here I'm a bit lost in how to grab the data from this NewMovie object somewhere else from another class, like the MovieManager from where I then use an object of the FileManager to save the data? 在这里我有点迷失在如何从另一个类别的其他地方从这个NewMovie对象中获取数据,比如MovieManager,然后我从那里使用FileManager的对象来保存数据?

In the MainForm I have this code to detect when the button 'add new movie' is clicked in the MovieForm: 在MainForm中,我有这段代码来检测在MovieForm中点击“添加新电影”按钮的时间:

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

Could I reach or pass the new MovieForm object here? 我可以在这里到达或传递新的MovieForm对象吗? How do I do then? 那我该怎么办? In my project I also have a MovieManager. 在我的项目中我也有一个MovieManager。 One way is to pass the object to that class? 一种方法是将对象传递给该类? Should I create an object of MovieManager in MovieForm and pass the data that way after I have created the NewMovie object? 我应该在MovieForm中创建MovieManager的对象,并在创建NewMovie对象后以这种方式传递数据吗?

Preciate some help and ideas! 提供一些帮助和想法! Thanks! 谢谢!

After ShowDialog has finished, the reference to movieForm is still valid. ShowDialog完成后,对movieForm的引用仍然有效。 Thus, you can create a public property in your MovieForm: 因此,您可以在MovieForm中创建公共属性:

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

You set this value in your MoveForm (when the form is closed or when some Save button is pushed), and then you can read it in your Main Form and pass it to your MovieManager: 您在MoveForm中设置此值(当窗体关闭或按下某个“保存”按钮时),然后您可以在主窗体中读取它并将其传递给MovieManager:

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

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

You should return newly created instance of Movie from the MovieForm and store it in the manager. 您应该从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