奇妙な問題が発生しています... 2 つのフォーム (Form1 と Form2) があります。Form1 は古い名前 (文字列) で呼び出し、ユーザーは Form1 に返される Form2 に新しい名前 (textbox1) を入力します。値を入力するかキャンセルすると、すべて正常に機能します...ただし、特に値を入力することを保証するためにエラーチェックを入れたいと思います。エラーチェックは問題なく動作しますが、エラー後、正しい値を入力するとform2は閉じますが何も起こりません。いくつかのブレークポイントを設定すると、Form1 は using(form2 ...) ステートメントを保持しているように見え、Form2 が終了するのを待っていますが、エラー メッセージが表示された後は何も起こりません。... Form2 F2 = new Form2 ... Form2 を削除すると、閉じて Fomr1 に戻ります。理想的には、値が入力されるかユーザーがキャンセルするまで Form2 にとどまりたいと思います。私は何が欠けていますか?
// Form1
using(Form2 F5 = new Form2(SelNm))
{
if(F5.ShowDialog()== DialogResult.OK)
{
//Do stuff
}
}
// Form2
public string newName { get; set; }
public string oldName { get; set; }
public Form2(string oldNm)
{
InitializeComponent();
oldName = oldNm;
}
private void btnOK_Click(object sender, EventArgs e)
{
if (textbox1.Text.Length > 0)
{
newName = textbox1.Text;
DialogResult = DialogResult.OK;
Close();
}
else
{
MessageBox.Show("ERROR: Must enter a new name.");
DialogResult = DialogResult.Cancel;
Form2 f2 = new Form2(oldName);
f2.Show();
Close();
}
}