解決済み:ビジュアルスタジオの問題であることが判明しました。閉鎖されたビジュアルスタジオ、清掃され、再建され、値は表示を開始しました。助けてくれてありがとう、私はVS2010に切り替える必要があると思う。公開テキストボックスを使用したフォーム間の値の受け渡し
これは、フォーム間で値を渡すのに最適で安全な方法ではないかもしれませんが、これは私がその時点で試みている方法です。だから、私がこの方法で働くのを助けてください。 の後に回答を提供すると、より良いやり方を追加することができます。
問題は、モーダルダイアログボックスを閉じて所有者に戻ったときに、モーダルのテキストボックス値が実際の値ではなく空の文字列であることです。私はいくつかの場所でこれを読んだことはありません。データはモーダルボックスが破棄された後でも保持されるはずです。ここに私のコードです。
public partial class PreferencesForm : Form
{
public PreferencesForm()
{
InitializeComponent();
}
private void okButton_Click(object sender, EventArgs e)
{
if (masterRadioButton.Checked == true)
{
if (password1TextBox.Text != password2TextBox.Text)
{
errorLabel.Text = "Passwords do not match, please re-enter both passwords and try again.";
this.Refresh();
}
else if (password1TextBox.Text == "" && password2TextBox.Text == "")
{
errorLabel.Text = "You must enter a password.";
}
else
{
okResultButton_Click(null, null);
}
}
else if (singleRadioButton.Checked == true)
{
okResultButton_Click(null, null);
}
}
private void cancelButton_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Dispose();
}
private void okResultButton_Click(object sender, EventArgs e)
{
// invisible button
this.DialogResult = DialogResult.OK;
this.Dispose();
}
ここでは、上記のフォームをモーダルダイアログボックスとして呼び出すコードを示します。
private void setPreferencesToolStripMenuItem_Click(object sender, EventArgs e)
{
PreferencesForm pf = new PreferencesForm();
DialogResult result = pf.ShowDialog();
if (result == DialogResult.OK)
{
if (pf.password1TextBox.Text != "")
{
masterPassword = pf.password1TextBox.Text;
}
else
{
masterPassword = null;
}
}
}
ありがとうございます。私はここでかなり不満を感じています。 > :(
注:password1TextBox変数のReadOnlyプロパティが正しく、私は、モーダルフォームで選択した内容に応じて、真または偽として示されているが、テキストプロパティは、まだ正しく表示されません
。
ダイアログフォームでDispose()を呼び出すことが正しくありません。 DialogResultプロパティを割り当てることで、ダイアログを閉じることができます。フォームインスタンスを削除するには、メインフォームの* using *ステートメントを使用する必要があります。 –