計算を行い、ユーザーが作成したプロジェクトを開いたり閉じたりするメインフォームがあります。
ユーザーが [ファイル] の下の [プロジェクトを開く] ボタンをクリックすると、以下のように [プロジェクトを開く] というフォームが開き、ユーザーはプロジェクトをロードできます。
ここで、[OK] をクリックした後に、このフォームからメイン フォームにデータを渡したいと思います。
私が抱えている問題は、メイン フォームが既に開いていることです。
この問題の解決策は非常に高く評価されます。
で作成してみて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;
}
私は質問を誤解しました。私の前の答えはMainForm
~OpenProjectForm
です。 今回は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();
}
参照:
それがあなたを助けることを願っています。
開いたフォーム クラスでイベントを作成します。
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
}
イベントは使えますか?EventClass を作成し、イベントの結果として値を返します。