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 もあります。1 つの方法は、オブジェクトをそのクラスに渡すことですか? NewMovie オブジェクトを作成した後、MovieForm で MovieManager のオブジェクトを作成し、その方法でデータを渡す必要がありますか?

いくつかの助けとアイデアを高く評価してください!ありがとう!

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から新しく作成された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 に答える
0

MovieForm クラスでプロパティを作成し、インスタンスの作成中にその値を渡します。

于 2012-06-01T07:19:15.617 に答える