私が正しく理解していれば、Form1とForm2の両方がアクセスできる設定情報を格納したクラスが必要です。のは、そのクラスForm1Settings
呼び出し、などを実装してみましょう:リフレッシュ方法の必要性を取り除く、簡単にするために
public static class Form1Settings
{
public static string ButtonText;
public static string Uri;
}
は、私はこのクラスとそのプロパティは、静的作られ、その両方Form1
とForm2
はそれに直接アクセスすることができます。
Form1
は、ブロック方法でForm2
を呼び出し、OKボタンがクリックされた場合にのみ表示を更新します。
public partial class Form1 : Form
{
private Form2 form2 = new Form2();
public Form1()
{
InitializeComponent();
}
private void buttonSettings_Click(object sender, EventArgs e)
{
if (form2.ShowDialog() == DialogResult.OK)
{
this.button1.Text = Form1Settings.ButtonText;
this.textBoxUrl.Text = Form1Settings.Uri;
this.Update();
}
}
}
そして最後に、Form2のは、ユーザからの入力で設定値を更新します:あなたはForm2の
private Form2_VisibleChanged(object sender, EventArgs e)
{
if (!this.Visible) { Refresh(); }
}
でVisibleChanged
イベントを使用することができます
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void buttonOK_Click(object sender, EventArgs e)
{
Form1Settings.ButtonText = this.textBoxButton.Text;
Form1Settings.Uri = this.textBoxUri.Text;
this.DialogResult = DialogResult.OK;
this.Hide();
}
}
それは「ShowModal」は、参照を望んでいた見つけることができませんでした。私はそれをShowDialogに変更しました。それはうまくいきましたが、[OK]をクリックすると「リフレッシュ」は参照されませんでした。 「結果」はどこに置くのですか?私はそれをForm1の "ショー"の下に置いた。 – Marshal
ええと、はい、タイプミスのため申し訳ありませんが、それはShowDialogの(ある) –
にも編集をチェック –