0

計算を行い、ユーザーが作成したプロジェクトを開いたり閉じたりするメインフォームがあります。

ユーザーが [ファイル] の下の [プロジェクトを開く] ボタンをクリックすると、以下のように [プロジェクトを開く] というフォームが開き、ユーザーはプロジェクトをロードできます。

ここに画像の説明を入力

ここで、[OK] をクリックした後に、このフォームからメイン フォームにデータを渡したいと思います。

私が抱えている問題は、メイン フォームが既に開いていることです。

この問題の解決策は非常に高く評価されます。

4

3 に答える 3

1

で作成してみてPropertiesくださいOpen Project Form

メインフォーム

private void openButton_Click(object sender, EventArgs e)
{
    using(var f = new Open_Project_Form())
    {
      f.ProjectReference = projectRefrencetTextBox.Text;
      f.ProjectNo = projectNoTextBox.Text;
      f.ShowDialog();
    }
}

プロジェクトフォームを開く

public string ProjectReference { get; set; }
public string ProjectNo { get; set; }

private void Open_Project_Form_Load(object sender, EventArgs e)
{
    projectRefrenceComboBox.Text = ProjectReference;
    projectNoTextBox.Text = ProjectReference;
}

アップデート

私は質問を誤解しました。私の前の答えはMainFormOpenProjectFormです。 今回はOpenProjectForm~です。MainForm

メインフォーム

//Properties for MainForm
public string ProjectReference { get; set; }
public string ProjectNo { get; set; }

private void openButton_Click(object sender, EventArgs e)
{
    using(var f = new Open_Project_Form() { Owner = this })
    {
        f.ShowDialog();
        if (f.DialogResult == DialogResult.OK)
        {
          projectRefrencetTextBox.Text = ProjectReference;
          projectNoTextBox.Text = ProjectNo;
        }
    }
}

Open Project Form:okButtonとがあることに注意してください。cancelButton

private void Open_Project_Form_Load(object sender, EventArgs e)
{
    okButton.DialogResult = DialogResult.OK;
    this.AcceptButton = okButton;
    this.CancelButton = cancelButton;
}

okButton_Click event

private void okButton_Click(object sender, EventArgs e)
{
   var f = Owner as MainForm;
   if (f == null) return;
   f.ProjectReference = projectRefrenceComboBox.Text;
   f.ProjectNo = projectNoTextBox.Text;
   Close();
}

参照:

それがあなたを助けることを願っています。

于 2013-02-09T12:25:41.713 に答える
0

開いたフォーム クラスでイベントを作成します。

public event EventHandler<ProjectDetailsArgs> ProjectDetailsSubmitted;
    public class ProjectDetails: EventArgs
    {
        public string projectReference{ get; set; }
        public string projectNo{get;set;}
        //you can add more prop.s here
    }

On your Ok button click event add 

if (ProjectDetailsSubmitted != null)
                {
                    ProjectDetailsArgs argss = new ProjectDetailsArgs();
                    argss.projectReference = projectRefrencetTextBox.Text;
                    argss.projectNo = projectNoTextBox.Text;
                    ProjectDetailsSubmitted(null, argss);
                }

メイン フォームで、そのハンドラーを作成します。

  childform.ProjectDetailsSubmitted+=new EventHandler<ProjectDetailsArgs>project_detailsSubmitted);

                public void project_detailsSubmitted(object sender, ProjectDetailsArgs e)
                {
         //Do Your work
                }
于 2013-02-09T12:43:04.140 に答える
0

イベントは使えますか?EventClass を作成し、イベントの結果として値を返します。

于 2013-02-09T12:26:35.813 に答える