带有错误检查的C#对话框结果



我遇到了一个奇怪的问题。。。我有两种表格(表格1和表格2)。Form1使用一个旧名称(字符串)调用,用户在Form2中输入一个新名称(textbox1),该名称将返回给Form1。如果他们输入值或取消,一切都很好。。。然而,我想进行错误检查,以确保他们输入一个值,以及其他内容。错误检查工作正常,但在错误之后,当输入正确的值时,form2会关闭,但不会发生任何事情。我放入了一些断点,Form1似乎保留了using(form2…)语句,等待form2完成,但在触发错误消息后,什么也没发生。如果我删除。。。Form2 F2=新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();
    }
}

原因是您在显示错误对话框后调用了一个新的Form2。这不是Form1正在等待的Form2的实例。与其调用新的Form2,为什么不重用当前的Form2?

取而代之的是:

    MessageBox.Show("ERROR: Must enter a new name.");
    DialogResult = DialogResult.Cancel;
    Form2 f2 = new Form2(oldName);
    f2.Show();
    Close();

为什么不这样?

    MessageBox.Show("ERROR: Must enter a new name.");
    // Do not close the form so the user can
    // input again

更新:

正如评论中所建议的。。

private void textbox1_TextChanged(object sender, RoutedEventArgs e)
{
    btnOK.Enabled = !string.IsNullOrWhiteSpace(textbox1.Text);
}

相关内容

  • 没有找到相关文章

最新更新