あるフォームから別のフォームに値を渡すことに関する多くのページと質問を目にします。少し違うことをしたいと思います。値ではなく、パラメーターとして渡されるフォーム全体。これは MDI フォームではないことに注意してください。
私は2つのボタンを持つ親フォームを持っています。1 つのボタンで、とりわけ Child1 フォームが作成されます。別の (オプションの) ボタンは、別の子フォーム エディターを呼び出します。
最初のボタンは検証ボタンで、有効な場合、キーと値のペアで満たされたリストビュー ボックスを含む Child1 フォームを表示します。2 つ目は、独自のボタンを備えたエディターです。これらの (送信) ボタンのいずれかが押された場合、最初の Child1 フォームが新しいキーと値のペアで更新されます。
私が抱えていた問題は、変更を反映するために Child1 フォームを取得できないように見えることです。この Child1 フォームを更新する最善の方法がわかりません。私は EndUpdate で BeginUpdate を試し、それを更新しましたが、すべての試行で少し迷ってしまいました。誰かが私を助けてくれることを願っています。
私が実際にやりたいのは、何かが「保存」または2番目の子フォームエディターから追加されたときに、受信トレイだと言って、ChildForm1を更新することです。この 2 番目の子フォーム エディターでボタンをクリックすると、最初の子フォームが更新されます。
親フォーム:
public ChildForm1 MyboxofValues;
private void btn1_Click(object sender, EventArgs e)
{
MyboxofValues = new ChildForm1();
MyboxofValues.Show();
}
private void btn2_Click(object sender, EventArgs e)
{
Editor myEditor = new Editor();
myEditor.Show();
}
ChildForm1:
public ChildForm1()
{
InitializeComponent();
updateMe();
}
public void updateMe()
{
listView1.Items.Clear();
if (MainCode.subRows.Count > 0)
{
foreach (KeyValuePair<string, string> element in MainCode.subRows)
{
ListViewItem lvi = new ListViewItem(element.Value);
lvi.SubItems.Add(element.Key);
listView1.Items.Add(lvi);
}
}
}
エディタフォーム:
private ChildForm1 originalForm = new ChildForm1();
private void btnSubmit_Click(object sender, EventArgs e)
{
originalForm.updateMe();
}
とても簡単だと思いますが、手に入りません。誰かがそれを手伝ってくれるなら、私に時間を節約してください! 提出結果を更新するより良い方法があれば、例を示してください。
テスト目的で、動作する ChildForm1 の「更新」ボタンを作成しました。(実際にはupdateMe()を呼び出すだけです。フォームの新しいインスタンスを作成し、実際のChildForm1の代わりにこの存在しない(null)フォームを変更しようとしていると思います。しかし、リストビューボックスをリフレッシュしたいエディターフォームから。