我现在在对象和引用中有点迷失。我正在构建一个包含一些不同类和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对象后以这种方式传递数据吗?
提供一些帮助和想法!谢谢!
答案 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;
}