[英]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.